【问题标题】:Javascript Regex vs Java RegexJavascript 正则表达式与 Java 正则表达式
【发布时间】:2018-11-01 15:04:41
【问题描述】:

我有一个 Javascript 中的正则表达式,效果很好:/:([\w]+):/g

我正在努力将我的 javascript 应用程序转换为 java,并且我知道使用 \ 即 /:([\\w]+):/g 来转义 \,但我的测试仍然没有返回与字符串“你好:testsmilie:你好吗?”的匹配项

    Pattern smiliePattern = Pattern.compile("/:([\\w]+):/g");
    Matcher m = smiliePattern.matcher(message);
    if(m.find()) {
        System.println(m.group(0));
     }

在 javascript 中它返回 ":testsmilie:" 就好了,所以我不确定有什么区别。任何帮助将不胜感激!

【问题讨论】:

  • Java 使用与 JavaScript 不同的一组规则,就像 PHP 与 JavaScript 一样,JS 不允许查看后面和其他类型,谷歌差异

标签: javascript java regex


【解决方案1】:

你在java中的正则表达式可以是:

Pattern.compile(":[^:]+:")

匹配: 后跟一个或多个没有两个点: 后跟:

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

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

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

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

【讨论】:

    【解决方案2】:

    您应该了解如何制作 Javascript 正则表达式,因为 / 是真正的正则表达式的分隔符,gglobal

    的修饰符

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


    你应该看看regex101,这是一个测试正则表达式的好网站

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 2015-12-29
      • 2017-09-27
      • 1970-01-01
      • 2013-09-09
      • 2016-09-28
      • 2013-01-18
      相关资源
      最近更新 更多