我正在尝试使用Python 2.7.2中的regex从字符串中提取所有出现的标记单词。或者简单地说,我想提取[p][/p]标记中的每一段文本。这是我的尝试:
regex = ur"[\u005B1P\u005D.+?\u005B\u002FP\u005D]+?"
line = "President [P] Barack Obama [/P] met Microsoft founder [P] Bill Gates [/P], yesterday."
person = re.findall(pattern, line)打印person生成['President [P]', '[/P]', '[P] Bill Gates [/P]']
正确的正则表达式是:['[P] Barack Obama [/P]', '[P] Bill Gates [/p]']还是['Barrack Obama', 'Bill Gates']。
发布于 2011-10-13 18:20:25
import re
regex = ur"\[P\] (.+?) \[/P\]+?"
line = "President [P] Barack Obama [/P] met Microsoft founder [P] Bill Gates [/P], yesterday."
person = re.findall(regex, line)
print(person)收益率
['Barack Obama', 'Bill Gates']正则表达式ur"[\u005B1P\u005D.+?\u005B\u002FP\u005D]+?"与u'[[1P].+?[/P]]+?'完全相同,只是更难读。
第一个带括号的组[[1P]告诉re列表['[', '1', 'P']中的任何字符都应该匹配,第二个带括号的组[/P]]也是如此,这根本不是您想要的。所以,
P.)[P]中的文字括号,用反斜杠转义括号:\[P\]..+?.放在分组括号中
发布于 2011-10-13 18:21:12
试试这个:
for match in re.finditer(r"\[P[^\]]*\](.*?)\[/P\]", subject):
# match start: match.start()
# match end (exclusive): match.end()
# matched text: match.group()发布于 2011-10-13 18:24:23
您的问题不是100%清楚,但我假设您想要找到[P][/P]标记中的每一段文本:
>>> import re
>>> line = "President [P] Barack Obama [/P] met Microsoft founder [P] Bill Gates [/P], yesterday."
>>> re.findall('\[P\]\s?(.+?)\s?\[\/P\]', line)
['Barack Obama', 'Bill Gates']https://stackoverflow.com/questions/7752551
复制相似问题