查找字符串中所有可能的子字符串。Python正则表达式

查找字符串中所有可能的子字符串。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]

我想找到一个字符串中所有可能的子字符串,要求如下:子字符串以N开头,下一个字母不是p,下一个字母是S或T

使用测试字符串
“NNSTL”
,我希望得到结果
“NNS”和“NST”


这在正则表达式中是可能的吗?

是。正则表达式代码段是:
“N[^P][ST]”

从这里将其插入任何正则表达式模块方法:

说明:

  • N
    匹配文本“N”
  • [^P]
    是一个集合,其中插入符号(^)表示逆(因此,它匹配集合中不存在的任何内容)
  • [ST]
    是另一个集合,它与“S”或“T”匹配

尝试以下正则表达式:

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酷!想将其标记为正确答案吗?每个答案的左边都应该有一个大勾号。单击我旁边的一个!谢谢!