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