gpt4 book ai didi

python - 创建单个正则表达式而不是嵌套语句

转载 作者:行者123 更新时间:2023-11-28 17:35:20 25 4
gpt4 key购买 nike

我想进行以下匹配:

match if MBzz is in the string but not if [Rr][Ee][Ff] is in the string

所以下面应该匹配:

  • klasdlkMBzzsdld
  • MBZZ

并且以下不应匹配:

  • RefmmmmMBzzmmmmmm
  • MBzzmmmmmmREFmmmm

等等

现在,我正在做这个可怕的 hack:

def mySearch(val):
if (re.compile('MBab').search(val) is not None) and \
(re.compile('[Rr][Ee][Ff]').search(val) is None):
return re.compile('MBab').search(val).group()
return None

不过,我觉得像这样简单的事情,我应该可以单行完成。

最佳答案

您可以使用以下带有修饰符 i 的正则表达式来忽略大小写:

^(?:(?!ref).)*(?=MBzz)(?:(?!ref).)*$

Demo

regex=re.compile(r'^[^ref]*(?=MBzz)[^ref]*$',re.I|re.MULTILINE)

(?=MBzz) 后面的正向外观将确保您的正则表达式引擎您的字符串包含 MBzz(?:(?! ref).)* 将匹配除 ref.

之外的任何内容

如果您想考虑 MBzz 的大小写,您可以使用以下正则表达式而不忽略大小写修饰符:

^(?:(?![rR][eE][fF]).)*(?=MBzz)(?:(?![rR][eE][fF]).)*$

关于python - 创建单个正则表达式而不是嵌套语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121770/

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