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

我有一个在Python / Ruby / PHP中定义的正则表达式,就像这样

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

当我为Java做这件事时,我必须将该问号双重转义为\\?

像这样:

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

有没有我可以用来自动完成的function? 或者我是否需要更改所有正则表达式以使用Java正则表达式引擎?

试试这个在线工具: http : //www.regexplanet.com/advanced/java/index.html

它采用正常的正则表达式并输出兼容java的字符串表达式。 节省了我自己转换巨大的正则表达式字符串的时间。

请注意,并非所有正则表达式都适用于java。 我已经看到奇怪的PHPvalidation正则表达式,在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表示法用于“原始”字符串,其中反斜杠不会被编译器解释。

我个人在Eclipse中使用来自网站的EXCELLENT插件http://www.bastian-bergerhoff.com/eclipse/features/
你会发现有正则表达式的QuickREx以及我经常使用的XPath开发者插件。
对于QuickREx,只需测试正则表达式,然后按下按钮将其复制到活动编辑器中,并使用好的转义字符。
这是必须的,试一试。

一个好的开始通常只是用“\\”来“替换所有”的“\”。

你并没有真正做一个改变,使这个工作与java正则表达式引擎。 您只需要处理在Java字符串中存储正则表达式的麻烦……您可以在函数中执行此操作,但这会使更多代码需要维护。 我建议如上所述进行查找替换…