如何将正则表达式转换为兼容java的正则表达式?

vaj7vani  于 2023-05-27  发布在  Java
关注(0)|答案(2)|浏览(124)

我有一个用Python/Ruby/PHP定义的正则表达式,如下所示

"(forumdisplay.php\?.*page=%CURRENTPAGE%)"

在Java中,我必须将这个问号转义为\\?
就像这样:

"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";

有没有一个函数可以自动完成这个操作?或者我需要改变我所有的正则表达式来使用Java正则表达式引擎?

rta7y2nd

rta7y2nd1#

试试这个在线工具https://www.regexplanet.com/advanced/java/index.html
它接受常规正则表达式并输出Java兼容的字符串表达式。节省了我自己转换巨大的正则表达式字符串的大量时间。
注意,并非所有的正则表达式都能在java中工作。我见过奇怪的PHP验证正则表达式,它在Java模式匹配中的行为完全不同。

pxq42qpu

pxq42qpu2#

请注意,这不是需要双反斜杠的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表示法表示“原始”字符串,其中反斜杠不被编译器解释。

相关问题