我有一个在Python/Ruby/PHP中定义的正则表达式,就像这样
"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
Run Code Online (Sandbox Code Playgroud)
当我为Java做这件事时,我必须双重逃避该问号 \\?
像这样:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";
Run Code Online (Sandbox Code Playgroud)
有没有我可以用来自动完成的功能?或者我是否需要更改所有正则表达式以使用Java正则表达式引擎?
Eri*_*hen 12
试试这个在线工具:http://www.regexplanet.com/advanced/java/index.html
它采用正常的正则表达式并输出兼容java的字符串表达式.节省了我自己转换巨大的正则表达式字符串的大量时间.
请注意,并非所有正则表达式都适用于java.我已经看到奇怪的PHP验证正则表达式,在java模式匹配中只是表现不同.
请注意,这不是需要双反斜杠的 Java 正则表达式引擎,而是 Java编译器。当你在Java源代码中编写以下内容时:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
Run Code Online (Sandbox Code Playgroud)
Java 编译器将其解释为字符串:
(forumdisplay.php\?.*page=%CURRENTPAGE%)
Run Code Online (Sandbox Code Playgroud)
然后,Java 正则表达式引擎执行与其他正则表达式引擎完全相同的操作 - 问号(因为它是转义的)按字面意思处理。
Python 中也会发生类似的情况 - 下面的两个字符串是相同的:
r"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)"
Run Code Online (Sandbox Code Playgroud)
这是使用 Pythonr表示法表示“原始”字符串,其中编译器不解释反斜杠。