我对正则表达式有一个特殊的问题。考虑这句有效词语:
sphere_a [sS]phere_b [sS]pher* [sS]pher* sph[eE]* sphere_a ^sphe* ^sp[hH]er*
我希望将这些单词拆分,因此我可以将每一个单独用于下游操作。为此,我目前正在使用2个正则表达式。
匹配句子开头的单词:
(?<=^)(?P<pattern>[\w\^\?\*\[\]]+)(?=\s|$)
和一个与所有其他人匹配的人:
(?<=\s)(?P<pattern>[\w\^\?\*\[\]]+)(?=\s|$)
很高兴知道这是否适合一个表达式?它会保存循环。
奇怪的是,第一次尝试显而易见:
(?<=^|\s)(?P<pattern>[\w\^\?\*\[\]]+)(?=\s|$)
失败并显示错误:
Invalid regular expression: look-behind requires fixed-width pattern
我正在使用Pythons re模块和pythex.org进行验证。
答案 0 :(得分:2)
您可以使用
轻松分割图案regexs = 'sphere_a [sS]phere_b [sS]pher* [sS]pher* sph[eE]* sphere_a ^sphe* ^sp[hH]er*'.split().
然后你可以迭代这样的模式:
for regex in regexs:
m = re.findall(regex, content)
但它将返回重复的匹配。