Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的正则表达式未闭合字符类;逃逸不';解决不了问题_Java_Regex - Fatal编程技术网

Java中的正则表达式未闭合字符类;逃逸不';解决不了问题

Java中的正则表达式未闭合字符类;逃逸不';解决不了问题,java,regex,Java,Regex,我有JS风格的正则表达式 ^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$ 我在JS中尝试了它,它对我有效(只想匹配不以HTTP/HTTPS协议开头的URL): 现在我想在Java后端使用相同的正则表达式。起初我发现了错误 未闭合字符类 读懂后,我意识到我必须避开\斜杠。我基本上在每个斜杠上加了三个。结果是: ^[\\\\w.-]+(?:\\\\.[\\\\w\\\\.-]+)+[\\\\w\\\\-\\\\._

我有JS风格的正则表达式

^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$
我在JS中尝试了它,它对我有效(只想匹配不以HTTP/HTTPS协议开头的URL):

现在我想在Java后端使用相同的正则表达式。起初我发现了错误

未闭合字符类

读懂后,我意识到我必须避开
\
斜杠。我基本上在每个斜杠上加了三个。结果是:

^[\\\\w.-]+(?:\\\\.[\\\\w\\\\.-]+)+[\\\\w\\\\-\\\\._~:/?#[\\\\]@!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=.]+$
即使编译器不再显示任何错误,结果也是空的,也就是说,它不能像在JS风格中那样匹配用例

我在代码中测试了Java正则表达式和

www.web.de # I want to match this
web.de # I want to match this
http://web.de # I do NOT want to match this
https://www.web.de # I do NOT want to match this

有人知道我遗漏了什么吗?

以下正则表达式在Java正则表达式测试仪中运行良好:

^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#\[\]@!\$&'\(\)\*\+,;=.]+$

请自己试一试。[字符前面应该加反斜杠。

为什么要把一个“\\”变成“\\\\”?你只试过“\\\”?@Jason是的,我也试过:
^[\\w.-]+(?:\.\.[\\w\\.-]+[\\w\\-\.\\\:/?\[\\\\]@.\$&'\\(\\\\\\\\\\\\\\\\*\\++,;=]+(代码)仍然没有比赛。仍然没有比赛。我是因为Java而逃脱的。我是因为Java而逃脱的。我被告知Java是这样的。我被告知Java是这样的。你只有一个斜杠在前面的[像这样这样这样这样的。你只有一个斜杠在[像这样这样的?[像这样这样的?<代码::::[像::::::\\\\\<0.0.0.0.0.><<<<<<<<<(代码:::::\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\......<<<<<<<<<<<<<<<<<<<0.w\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\+$
进入但没有找到匹配项我刚刚测试过,它可以工作。应该选中多行复选框。是的,你说得对!它可以工作