You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则完善字符串*字符的无效校验规则

字符串校验规则实现优化

需求梳理

需要校验的字符串规则明确如下:

  • 字符串中间不能包含*字符
  • 若以*开头,必须是*.格式(*后必须紧跟.)
  • 若以*结尾,必须是.*格式(*前必须紧跟.)
  • 最多允许出现一个*
  • 不允许同时在首尾都带有*

现有代码仅完成了“中间不能有*”的校验,需要补充其余规则的判断逻辑。

优化后的代码

import re

def invalid_syntax(s):
    # 匹配所有无效场景的正则表达式
    invalid_pattern = r'(?<!^)\*(?!$)|^\*(?!\.)|(?<!\.)\*$|(\*).*\1|^\*.*\*$'
    return bool(re.search(invalid_pattern, s))

正则逻辑拆解

正则表达式的每个部分对应一种无效情况:

  • (?<!^)\*(?!$):匹配不在字符串首尾的*(即中间出现*,比如examp*leStr)
  • ^\*(?!\.):匹配以*开头但后续不是.的情况(比如*exampleStr)
  • (?<!\.)\*$:匹配以*结尾但前面不是.的情况(比如exampleStr*)
  • (\*).*\1:匹配出现多个*的情况(比如*.exampleStr.*)
  • ^\*.*\*$:匹配首尾同时存在*的情况(比如*.exampleStr*)

测试验证

用给出的测试用例验证,结果完全符合预期:

# 有效场景返回False
assert invalid_syntax('exampleStr') == False
assert invalid_syntax('*.exampleStr') == False
assert invalid_syntax('exampleStr.*') == False

# 无效场景返回True
assert invalid_syntax('*exampleStr') == True
assert invalid_syntax('examp*leStr') == True
assert invalid_syntax('ex*ampleStr') == True
assert invalid_syntax('exampleStr*') == True
assert invalid_syntax('*.exampleStr*') == True
assert invalid_syntax('*.exampleStr.*') == True

内容的提问来源于stack exchange,提问作者TKTR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:55:14