Javascript正则表达式与Java正则表达式

Javascript正则表达式与Java正则表达式,javascript,java,regex,Javascript,Java,Regex,我用Javascript编写了一个正则表达式,效果非常好:/:([\w]+):/g 我正在努力将我的javascript应用程序转换为java,我知道如何摆脱\using\e./:([\\w]+):/g,但我的测试仍然没有返回与字符串“hello:testsmilie:你好吗?” 在javascript中,它返回“:testsmilie:”很好,所以我不确定区别是什么。任何帮助都将不胜感激 您应该了解如何创建Javascript正则表达式,因为/是实际正则表达式的分隔符,g是全局正则表达式的修饰

我用Javascript编写了一个正则表达式,效果非常好:
/:([\w]+):/g

我正在努力将我的javascript应用程序转换为java,我知道如何摆脱\using\e.
/:([\\w]+):/g
,但我的测试仍然没有返回与字符串“hello:testsmilie:你好吗?”


在javascript中,它返回“:testsmilie:”很好,所以我不确定区别是什么。任何帮助都将不胜感激

您应该了解如何创建Javascript正则表达式,因为
/
是实际正则表达式的分隔符,
g
是全局正则表达式的修饰符

在Java中,等价物是:
:([\\w]+):
,不需要全局标志,因为只需多次调用
.find()
,即可获得所有匹配项



您应该看看哪个网站是测试正则表达式的好网站

您的java正则表达式可以是:

Pattern.compile(":[^:]+:")
哪个匹配
后跟一个或多个无两个点
后跟

或者,如果您想使用
\w
,您可以使用:

Pattern.compile(":\\w+:")

如果您注意到不需要组
()
的括号,因此要获得结果,您可以使用:

System.out.println(m.group());

Java使用的规则与JavaScript不同,很像PHP和JavaScript,JS不允许使用look behinds和其他类型,谷歌可以消除这些差异
System.out.println(m.group());