【发布时间】:2019-01-12 05:10:52
【问题描述】:
我有一个这样的字符串:
'\n479 Appendix I\n1114\nAppendix I 481\n'
又想用正则表达式查找并返回
['479 Appendix I', 'Appendix I 481']
我首先尝试了这个表达式:
pattern = r'''
(?: \d+ \s)? Appendix \s+ \w+ (?: \s \d+)?
'''
regex = re.compile(pattern, re.VERBOSE)
regex.findall(s)
但这会返回
['479 Appendix I\n1114', 'Appendix I 481']
因为\s 也匹配\n。
按照这篇文章Python regex match space only 中的一个答案,
我尝试了以下方法:
pattern = r'''
(?: \d+ [^ \S\t\n])? Appendix \s+ \w+ (?: [^ \S\t\n] \d+)?
'''
regex = re.compile(pattern, re.VERBOSE)
regex.findall(s)
然而没有返回想要的结果,给出:
['Appendix I', 'Appendix I']
在这种情况下,什么表达式会起作用?
【问题讨论】: