我想在字符串中找到所有可能的子字符串,其中包含以下要求:子字符串以N开头,下一个字母是除P以外的任何字母,下一个字母是S或T
使用测试字符串"NNSTL"
,我希望得到结果"NNS" and "NST"
Regex有可能吗?
答案 0 :(得分:4)
尝试以下正则表达式:
N[^P\W\d_][ST]
第一个字符是N,下一个字符是(^)P,非字母(\ W),数字(\ d)或下划线(_)。最后一个字母是S或T.我假设第二个字母必须是一个字母。
修改
上述正则表达式只会匹配字符串"NNSTL"
中的第一个实例,因为它会在位置3开始下一个潜在匹配:"TL"
。如果您确实同时想要两个结果,请使用以下内容:
(?=(N[^P\W\d_][ST])).
子字符串将在第1组中,而不是整个模式匹配,这只是第一个字符。
答案 1 :(得分:2)
您可以使用re模块执行此操作:
import re
这是一个可能的搜索字符串:
my_txt = 'NfT foo NxS bar baz NPT'
因此我们使用首先查找N的正则表达式,除P之外的任何字符,以及S或T的字符。
regex = 'N[^P][ST]'
并使用re.findall
:
found = re.findall(regex, my_txt)
并找到了回报:
['NfT', 'NxS']
答案 2 :(得分:1)
是。正则表达式代码段为:"N[^P][ST]"
从此处插入任何正则表达式模块方法:http://docs.python.org/2/library/re.html
说明:
N
匹配文字“N”。[^P]
是一个集合,其中插入符号(“^”)表示反向(因此,它匹配不在集合中的任何内容。[ST]
是另一套,它匹配“S”或“T”。