使用Matcher和pattern从java中的模式中提取字符串

时间:2016-03-25 16:19:52

标签: java regex

如果我有这样的字符串"错误。 LineNumber = 2,originalLine =' ABC',lineErrors = [找到特殊字符]",我想提取

  • 行号为' 2',
  • originalLine as' ABC'和
  • 错误'特别字符找到'

我是正则表达式的新手,任何指针都会非常有用。我浏览了几个过去的问题,但没有得到我想要的东西。

1 个答案:

答案 0 :(得分:2)

您可以使用捕获组捕获值。这是Java中的示例代码。这适用于指定的字符串,但您可以相应地调整和更改它。

public class Main {

public static void main(String[] args) {

    String s = "Error. LineNumber = 2, originalLine = 'ABC', lineErrors = [Special chars found]";
    String patternStr = "Error. LineNumber = ([\\S ]+), originalLine = ([\\S ]+), lineErrors = ([\\S ]+)";
    Pattern p = Pattern.compile(patternStr);
    Matcher m = p.matcher(s);
    if (m.find()) {
        int count = m.groupCount();
        System.out.println("group count is " + count);
        for (int i = 0; i < count; i++) {
            System.out.println(m.group(i+1));
        }
    }
  }
}