我正在尝试使用 Python 2.7.2 中的正则表达式从字符串中提取所有出现的标记单词。或者简单地说,我想提取其中的每一段文本[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]']
or ['Barrack Obama', 'Bill Gates']
.
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)
yields
['Barack Obama', 'Bill Gates']
正则表达式ur"[\u005B1P\u005D.+?\u005B\u002FP\u005D]+?"
是完全一样的
统一码为u'[[1P].+?[/P]]+?'
除了更难阅读。
第一个括号内的组[[1P]
tells re http://docs.python.org/library/re.html#module-re列表中的任何字符['[', '1', 'P']
应该匹配,并且与第二个括号组类似[/P]]
.那根本不是你想要的。所以,
- 删除外部方括号。 (同时删除
流浪
1
在...前面P
.)
- 为了保护中的文字括号
[P]
,用 a 转义括号
反斜杠:\[P\]
.
- 要仅返回标签内的单词,请放置分组括号
大约
.+?
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)