2024-04-26 02:23:54 发布
网友
我有一个非常具体的regex请求。我需要匹配字符串
当只使用第一个和最后一个条件时,这个正则表达式似乎工作得很好:
^.*m_.*(?<!Shape)$
但当我加入中间标准时,我就迷路了。你知道吗
这可以通过Python中的普通字符串方法实现(为了清楚起见,我添加了括号):
("m_" in input) and ("phys_" not in input) and (not input.endswith("Shape"))
我将(总是在“m”后面的一些字符)解释为“phys”从不出现在“m”前面的提示,而不是允许“phys”出现在“m”前面的情况通过。你知道吗
你想要的正则表达式是
^(?=.*m_)(?!.*phys_)(?!.*Shape$).*$
它将捕获整个字符串,每个条件都在它自己的展望中。您可以对它进行测试,并看到www.debuggex.com上发生的事情的可视化。你知道吗
import re r = re.compile(r'^(?=.*m_)(?!.*m_.+phys_)(?!.+Shape$)') print r.match("aaa") print r.match("aaa m_ xx") print r.match("aaa m_ xx Shape") print r.match("aaa m_ xx phys_ foo")
基本原则是:
^ (?= .* should be there) (?! .* should not be there)
这可以通过Python中的普通字符串方法实现(为了清楚起见,我添加了括号):
我将(总是在“m”后面的一些字符)解释为“phys”从不出现在“m”前面的提示,而不是允许“phys”出现在“m”前面的情况通过。你知道吗
你想要的正则表达式是
它将捕获整个字符串,每个条件都在它自己的展望中。您可以对它进行测试,并看到www.debuggex.com上发生的事情的可视化。你知道吗
基本原则是:
相关问题 更多 >
编程相关推荐