将正则表达式转换为与java兼容的正则表达式的简单方法?
我有一个在Python / Ruby / PHP中定义的正则表达式,如下所示
"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
当我为Java做这件事时,我必须加倍地把这个问号转义到\\?
这样:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";
有没有一个函数可以用来自动做到这一点?或者我需要更改所有正则表达式才能使用Java正则表达式引擎?
我有一个在Python / Ruby / PHP中定义的正则表达式,如下所示
"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
当我为Java做这件事时,我必须加倍地把这个问号转义到\\?
这样:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";
有没有一个函数可以用来自动做到这一点?或者我需要更改所有正则表达式才能使用Java正则表达式引擎?
试试这个在线工具 https://www.regexplanet.com/advanced/java/index.html
它采用您的普通正则表达式并输出与 Java 兼容的字符串表达式。为我节省了大量的时间,我自己转换了巨大的正则表达式字符串。
请注意,并非所有正则表达式都适用于 java。我见过奇怪的PHP验证正则表达式,它在java模式匹配中的行为有所不同。
请注意,这不是需要双反斜杠的 Java 正则表达式引擎,而是 Java 编译器。当您在 Java 源代码中编写以下内容时:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
Java 编译器将此解释为字符串:
(forumdisplay.php\?.*page=%CURRENTPAGE%)
然后,Java正则表达式引擎执行与其他正则表达式引擎完全相同的事情 - 问号(因为它是转义的)按字面意思处理。
类似的事情发生在Python中 - 下面的两个字符串是相同的:
r"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
这是对“原始”字符串使用Python表示法,其中反斜杠不由编译器解释。r