如何构造正则表达式搜索模式来查找后面不跟string2的string1(立即或不紧跟)?在
例如,如果string1=“MAN”和string2=“PN”,则示例搜索结果将是:
"M": Not found
"MA": Not found
"MAN": Found
"BLAH_MAN_BLEH": Found
"MAN_PN": Not found
"BLAH_MAN_BLEH_PN": Not found
"BLAH_MAN_BLEH_PN_MAN": Not found
理想情况下,进行一次线性搜索,而不是对string2进行第二次搜索。在
PS:使用的语言是Python
看起来您可以使用
MAN(?!.*PN)
。这与MAN
匹配,并使用否定的lookahead来确保后面没有PN
(as seen on rubular.com)。在给定
MAN_PN_MAN_BLEH
,上面的模式将找到第二个MAN
,因为它后面没有PN
。如果要验证整个字符串并确保没有MAN.*PN
,那么可以使用类似^(?!.*MAN.*PN).*MAN.*$
(as seen on rubular.com)的方法。在参考文献
相关问题
非正则表达式选项
如果字符串要按字面匹配,那么还可以检查子字符串出现的索引。在
在Python中,}分别返回子字符串出现的最低和最高索引。在
find
和{所以要确保
string1
出现,但后面永远不会跟string2
,如果找不到字符串,两者都会返回-1
,因此看起来您可以只测试以下条件:这将比较}最右边的出现。在
string1
最左边的出现和{-1
,结果是false
string1
发生,而{string2
必须在最左边string1
的左边string1
后跟string2
API链接
相关问题 更多 >
编程相关推荐