Python正则无法匹配返回值为Map开头的Java方法,原因何在?
Java方法匹配正则问题分析
- 问题根源:你写的正则里,匹配返回类型的
[\w\<\>\[\]]+字符集不包含逗号和空格,但Map<String, RouteTarget>这类带泛型的返回值里有这两个字符,导致正则只能匹配到<String就停止,无法覆盖完整的返回类型,最终整个方法匹配失败。 - regex101能匹配的可能原因:你在测试时可能选错了正则引擎(比如用了Java引擎而非Python),或者测试用的示例文本没有空格/逗号,又或者临时调整了正则但没同步到Python代码中。
- 修复后的正则:把逗号和空格加入返回类型的匹配字符集,调整后如下:
额外说明:如果需要更精准匹配,可以根据Java语法扩展字符集,比如加入泛型常用的pattern = r"(public|private|protected|static|\s) +[\w\<\>\[\],\s]+\s+(\w+) *\([^\)]*\) *(\{?|[^;])"?、嵌套类的.等;另外\s会匹配所有空白字符,若要限制为单个空格,可替换为。
内容的提问来源于stack exchange,提问作者Bog Alt
相关产品推荐
相关产品推荐

