gpt4 book ai didi

Python正则表达式不匹配行尾

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:51 24 4
gpt4 key购买 nike

我正在尝试使用相当复杂的正则表达式来匹配 C/C++ 函数定义。我发现了一个它不起作用的案例,我试图了解原因。这是不匹配的输入字符串:

   void Dump(const char * itemName, ofstream & os)

这显然是一个有效的 C++ 方法声明。这是回复:

   ^[^=+-|#]*?([\w<>]+\s+(?!if|for|switch|while|catch|return)\w+)\s*\([^;=+-|]*$

这主要是试图区分其他看起来像方法声明的 C 语法,即单词后跟括号。

使用非常有用的 Python 正则表达式调试器 (http://www.pythonregex.com/),我将它缩小到尾随的“$”——如果我删除正则表达式中的尾随 $,它会匹配上面的方法签名;如果我留在 $,它不会。一定有一些 Python RE 的特性让我无法理解。谢谢。

最佳答案

在字符类 [^;=+-|] 中使用 +-| 是一个范围规范。这将导致字符类包含(实际上不包括,因为您正在使用 ^)比您预期的要多得多。要在字符类中指定文字 -,请首先提及它,例如 [^-;=+|]

关于Python正则表达式不匹配行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com