gpt4 book ai didi

python - 排除正则表达式中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:31 25 4
gpt4 key购买 nike

我目前有以下正则表达式:

/(_|[a-z]|[A-Z])(_|[a-z]|[A-Z]|[0-9])*/

我希望表达式不与“PI”匹配,但我没有这样做。为了澄清,我希望以下内容有效:_PI, abcPI, 皮皮皮皮我只是不想单独接受 PI。

最佳答案

在跳转到解决方案之前,请查看您的正则表达式:交替组内单个范围的字符类是编写正则表达式模式的低效方式。您可以简单地将这些 ([A-Z]|[0-9]|_)+ 合并到 [A-Z0-9_]+ 中。

解决方案可能是一个词边界,在它之后有一个否定的前瞻:

r"\b(?!PI\b)[_a-zA-Z][_a-zA-Z0-9]*"

参见 regex demo .您可以将 [a-zA-Z0-9_] 替换为 \w:

re.compile(r"\b(?!PI\b)[_a-zA-Z]\w*")          # In Python 2.x, re.UNICODE is not enabled by default
re.compile(r"\b(?!PI\b)[_a-zA-Z]\w*", re.A) # In Python 3.x, make \w match ASCII only

详情

  • \b - 单词边界
  • (?!PI\b) - 紧靠右边,PI 不能是一个完整的词
  • [_a-zA-Z] - ASCII 字母或 _
  • [_a-zA-Z0-9]* - 0 个或多个下划线、ASCII 字母或数字。

关于python - 排除正则表达式中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com