我有一个正则表达式,在这个正则表达式中,我试图提取每一组后面没有紧跟“(”符号)的字母。例如,以下正则表达式对包含变量名(x、y和z)和函数名(movav和movsum)的数学公式进行操作,这两个名称都完全由字母组成,但其中只有函数名后跟“(”。在
re.findall("[a-zA-Z]+(?!\()", "movav(x/2, 2)*movsum(y, 3)*z")
我希望表达式返回数组
^{pr2}$但它返回数组
['mova', 'x', 'movsu', 'y', 'z']
从理论上我可以理解为什么正则表达式会返回第二个结果,但是有没有方法可以修改它以只返回数组['x', 'y', 'z']
?在
您需要将匹配限制为整个单词。所以使用
\b
来匹配单词的开头或结尾:另一种不依赖单词边界的解决方案:
检查字母后面没有
(
或其他字母。在添加字边界匹配器
\b
:\b
匹配两个单词之间的空字符串,因此现在您要查找后面紧跟着(
的单词边界的字母。有关详细信息,请参见the ^{相关问题 更多 >
编程相关推荐