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

时间:2014-02-26 02:25:12

标签: python regex string

我想在字符串中找到所有可能的子字符串,其中包含以下要求:子字符串以N开头,下一个字母是除P以外的任何字母,下一个字母是S或T

使用测试字符串"NNSTL",我希望得到结果"NNS" and "NST"

Regex有可能吗?

3 个答案:

答案 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”。