正则表达式表示法

时间:2017-07-21 02:30:45

标签: java regex

我是正则表达式的新手,所以我想知道如何表示像String一样 "你好,从另一边 - 错误(找不到文件)" 使用正则表达式将事物分组在一起。我的目标是只从另一方选择" hello"然后忽视一切。我试过硬编码,但似乎在&#34之后可以有一个随机数量的空格。"所以我真的不知道如何在短语之后选择所有内容而不指定空格的数量。 请帮忙!

澄清:第一部分可以是随机的,但固定部分是一些空格后跟 - 错误.....

2 个答案:

答案 0 :(得分:2)

您的输入中有三组(我可以看到)x - y(z) - 我会编译Pattern并使用Matcher;

之类的东西
String str = "hello from the other side - Error(cannot find file)";
Pattern p = Pattern.compile("(.+)\\s+-\\s+(.+)\\((.+)\\)");
Matcher m = p.matcher(str);
if (m.find()) {
    System.out.printf("Part 1: %s Part 2: %s Part 3: %s%n", 
            m.group(1), m.group(2), m.group(3));
}

哪个输出

Part 1: hello from the other side Part 2: Error Part 3: cannot find file

答案 1 :(得分:0)

/(.*?)\s*\s-\s\w+\(\w*\)/

([^\n\r\u2028\u2029]*?) * - \w+\([^\n\r\u2028\u2029]*\)

从第1组

中检索您的比赛

不匹配的事情:

- Error(x)
hello-Error(x)
hello - (x)
hello - Error

匹配的东西

 - x() #is the minimum needed to trigger a match - though group #1 will be empty

hello from the other side - Error(cannot find file) #group 1: `hello from the other side`
hello - noarg()                                     #group 1: `hello`
hello from           - Error()                      #group 1: `hello from`
hello    from        - Error()                      #group 1: `hello    from`

您可以使用regex101regexr和regexbuddy等工具来帮助调试和测试正则表达式。