查找字符串中所有可能的子字符串。Python正则表达式
我想找到一个字符串中所有可能的子字符串,要求如下:子字符串以N开头,下一个字母不是p,下一个字母是S或T 使用测试字符串查找字符串中所有可能的子字符串。Python正则表达式,python,regex,string,Python,Regex,String,我想找到一个字符串中所有可能的子字符串,要求如下:子字符串以N开头,下一个字母不是p,下一个字母是S或T 使用测试字符串“NNSTL”,我希望得到结果“NNS”和“NST” 这在正则表达式中是可能的吗?是。正则表达式代码段是:“N[^P][ST]” 从这里将其插入任何正则表达式模块方法: 说明: N匹配文本“N” [^P]是一个集合,其中插入符号(^)表示逆(因此,它匹配集合中不存在的任何内容) [ST]是另一个集合,它与“S”或“T”匹配 尝试以下正则表达式: N[^P\W\d_][ST]
“NNSTL”
,我希望得到结果“NNS”和“NST”
这在正则表达式中是可能的吗?是。正则表达式代码段是:
“N[^P][ST]”
从这里将其插入任何正则表达式模块方法:
说明:
匹配文本“N”N
是一个集合,其中插入符号(^)表示逆(因此,它匹配集合中不存在的任何内容)[^P]
是另一个集合,它与“S”或“T”匹配[ST]
N[^P\W\d_][ST]
第一个字符是N,下一个字符不是(^)p、非字母(\W)、数字(\d)或下划线(\u)。最后一个字母是S或T。我假设第二个字符必须是字母
编辑
上面的正则表达式将只匹配字符串“NNSTL”
中的第一个实例,因为它随后将在位置3开始下一个潜在匹配:“TL”
。如果确实希望同时使用两个结果,请使用以下命令:
(?=(N[^P\W\d_][ST])).
子字符串将位于第1组中,而不是整个模式匹配(仅为第一个字符)。您可以使用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']
看看这个,我的朋友:希望它能有所帮助……除非你真的运行它,否则它会返回
['NNS']
(没有“NST”).对。CJ Dennis似乎使用前瞻性断言得到了正确的答案。@rodrigovz酷!想将其标记为正确答案吗?每个答案的左边都应该有一个大勾号。单击我旁边的一个!谢谢!