【问题标题】:Regex pattern issue正则表达式模式问题
【发布时间】:2012-10-04 09:40:49
【问题描述】:

我有以下字符串:

!date +10 (yyyy-MM-dd'T'HH:mm:ssz)

这个字符串也可以是(注意减号而不是加号。:

!date -10 (yyyy-MM-dd'T'HH:mm:ssz)

我需要一个正则表达式模式来提取+(或-)之后的数字。可能不止一位。

我还需要一个模式来提取括号()的内容;

我玩过 regex 朋友。但无法获得工作模式。

干杯。

【问题讨论】:

  • 你尝试了什么?你的输出应该是什么?

标签: java regex


【解决方案1】:

要选择数字和括号内容,您可以这样做:

String str = "date +10 (yyyy-MM-dd'T'HH:mm:ssz)";
Matcher m = Pattern.compile(".*[+|-](\\d+).*\\((.*)\\).*").matcher(str);
if (m.matches()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}

【讨论】:

    【解决方案2】:

    此正则表达式应分别为您提供与 +/- 之后的数字以及第一个和第二个捕获组中括号内容的匹配:

    "!date\\s[+-](\\d+)\\s\\(([^)]*)\\)"
    

    【讨论】:

      【解决方案3】:

      以下正则表达式会导致 2 个包含您想要的内容的捕获组

      "!date\\s[+-](\\d+)\\s\\((\\d{4}-\\d{2}-\\d{2}'T'\\d{2}:\\d{2}:\\d{2}z)\\)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 2019-01-23
        • 1970-01-01
        • 2011-01-25
        相关资源
        最近更新 更多