【问题标题】:Perl to Java Regex conversionPerl 到 Java 正则表达式的转换
【发布时间】:2015-07-30 13:09:49
【问题描述】:

我需要将一些 perl 正则表达式转换为 Java 正则表达式。我是 Java 新手,对 Java 正则表达式了解不多。

我要转换的正则表达式与此非常相似

Text =~ /(^FOO[0-9]{4})|(^BAR[0-9]{3})/

查看字符串是否匹配 FOO4823 BAR943FOO 和 4 个数字或 BAR 和 3 个数字)。我将如何用 Java 重写它?有什么简单的规则可以转换吗?

【问题讨论】:

  • 从这里开始:docs.oracle.com/javase/tutorial/essential/regex?当您遇到 Java 代码问题时再回来。
  • 你试过什么?您是否对名为 google 的现代网站进行过任何研究?和 Oracle 文档? docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
  • 我不懂 PHP。 =~ 是否抓住了正则表达式匹配的部分?如果匹配不止一场会怎样?
  • @markspace 这是 perl。它只与模式匹配并返回真或假。这就是我需要知道的。模式是否匹配。
  • Perl 和 Java 之间存在构造差异,但对于您的正则表达式,构造是相同的。您是否尝试在无需学习标准 Regex 函数调用的情况下执行 Java regex?这不是一个好的开始。

标签: java regex perl


【解决方案1】:

要在 Java 中重写,你需要类似的东西

String text = ...
Matcher matcher = Pattern.compile("(^FOO[0-9]{4})|(^BAR[0-9]{3})").matcher( text );
if( matcher.find() ) {  
  // ... it was found
}

关于将 Perl 转换为 Java 的指南,有一个 pretty good discussion in this StackOverflow question.

【讨论】:

    【解决方案2】:

    应该很相似。

    Pattern pattern = Pattern.compile("(^FOO[0-9]{4})|(^BAR[0-9]{3})");
    System.out.println(pattern.matcher("FOO4823").find());
    System.out.println(pattern.matcher("BAR943").find());
    

    看看测试here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2023-03-14
      • 2012-08-21
      相关资源
      最近更新 更多