将正则表达式转换为java兼容正则表达式的简单方法?

将正则表达式转换为java兼容正则表达式的简单方法?,java,regex,Java,Regex,我在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正则表达式引擎吗?

一个好的开始通常是用“\\”来完成“\”的“查找替换所有”


您实际上并没有做任何更改,以使java正则表达式引擎能够正常工作。您只需要处理将正则表达式存储在Java字符串中的痛苦。。。您可以在函数中执行此操作,但这会导致需要维护更多的代码。我建议按照上面所述进行查找替换…

我个人在Eclipse中使用来自站点的优秀插件
您会发现QuickREx用于正则表达式,还有我经常使用的XPath Developer插件。
对于QuickREx,只需测试正则表达式,然后按按钮在活动编辑器上复制它,并使用良好的转义字符。
这是必须的,试一试。

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

试试这个在线工具

它接受普通正则表达式并输出与Java兼容的字符串表达式。节省了我大量的时间自己转换巨大的正则表达式字符串


请注意,并非所有正则表达式都在java中工作。我见过奇怪的PHP验证正则表达式,它在java模式匹配中的行为完全不同。

您还应该转义一个具有特殊含义(每个字符)的点(
)。而且在java中没有与原始字符串等价的东西?不,您必须在java中进行双重转义。这家伙有答案。嗨,您的链接不再有效。错误404看起来原来的QuickREx就在这里,它已经被转移到Eclipse市场