正则表达式匹配句子开头,结尾和中间的有效单词

时间:2016-01-31 22:50:27

标签: python regex pattern-matching

我对正则表达式有一个特殊的问题。考虑这句有效词语:

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进行验证。

1 个答案:

答案 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)

但它将返回重复的匹配。