正则匹配重复字符串中某一段内容

有这么一个字符串

s = 'PN:\nabcd\nPN:\nabcd\nabcd\nPN:\nabcd\nabcd\n'
即
s = '''
    PN:
    abcd
    PN:
    abcd
    abcd
    PN:
    abcd
    abcd
    '''

我只想匹配到其中两个PN之间的\nabcd\n或者\nabcd\nabcd\n,然后我用了如下正则:

result = re.search('P\s*N:\s*(.*[\s\S]*)P.*', s, re.IGNORECASE).group(0)

最后输出result的结果为:

PN:
abcd
PN:
abcd
abcd
PN:

求大神指点~

阅读 7.9k
2 个回答

呃,问题已解决,不用正则就行了……
果然之前太依赖正则被自己误导了。
附上代码:

lst = s1.split('PN')
for index, each in enumerate(lst):
    print index, ' + ', each

输出结果:

0  +  
1  +  : 
    abcd
2  +  : 
    abcd
    abcd 
3  +  : 
    abcd
    abcd

然后只需要写个函数,从外面传参数进来就可以得到任意两个PN之间的内容了……

不懂python,写了下js,不知道有帮助没

var str = 'PN:\nabcd\nPN:\nabcd\nabcd\nPN:\nabcd\nabcd\n';
var result = str.match(/PN:([a-z\n])*[^PN:]+/ig);

结果

["PN:\nabcd\n", "PN:\nabcd\nabcd\n", "PN:\nabcd\nabcd\n"]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏