在模式中匹配RegEx模式

时间:2014-02-26 02:22:06

标签: python regex

民间,

我必须匹配以下模式:

首字母必须为N. 第二个字母除了P. 第三个必须是S或T. 和第四封除了P之外的任何一封信。

字符串只是大写字母,没有数字,空格等等。

所以使用python这是我到目前为止所得到的:

import re
strRegex = r"N[^P][ST][^P]"
objRegex = re.compile(strRegex)

print objRegex.findall('NNSTL')

这将打印:NNST

我的期望是:NNST和NSTL

由于

1 个答案:

答案 0 :(得分:1)

re.findall只会返回非重叠的匹配

试试这个:

    >>> strRegex = r"N[^P][ST][^P]"
    >>> regex = compile(strRegex)
    >>> def newfind(regex,str,pos=0):
    ...    result=regex.search(str,pos)
    ...    if result is None: return []
    ...    else: return [result.group()]+newfind(regex,str,result.start()+1)
    ...
    >>>
    >>> newfind(regex,'NNSTL')
    ['NNST', 'NSTL']

参考:https://mail.python.org/pipermail/tutor/2005-September/041126.html