Java 正则表达式表示法

Java 正则表达式表示法,java,regex,Java,Regex,我不熟悉正则表达式,所以我想知道如何表示类似 来自另一端的hello-Error找不到文件 使用正则表达式将事物分组在一起。我的目标是只从另一边选择hello这个词,然后忽略后面的一切。我试着硬编码,但似乎在另一侧后面可能有随机数目的空格,所以我真的不知道如何在不指定空格数的情况下选择短语后面的所有内容。 请帮忙 澄清:第一部分可以是随机的,但固定部分是一些空格,后跟-Error…..我可以在您的输入中看到三组,x-yz-我将编译一个模式并使用匹配器;差不多 String str = "hell

我不熟悉正则表达式,所以我想知道如何表示类似 来自另一端的hello-Error找不到文件 使用正则表达式将事物分组在一起。我的目标是只从另一边选择hello这个词,然后忽略后面的一切。我试着硬编码,但似乎在另一侧后面可能有随机数目的空格,所以我真的不知道如何在不指定空格数的情况下选择短语后面的所有内容。 请帮忙


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

我可以在您的输入中看到三组,x-yz-我将编译一个模式并使用匹配器;差不多

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中检索您的匹配项

不匹配的内容: 相配的东西
您可以使用、和regexbuddy等工具来帮助调试和测试正则表达式。

您必须更加精确。如果您只想匹配“hello from the other side”,您可以将其用作RE。如果您想将任意短语匹配到并排除“-”及其前面的所有空白,这也很简单,但您需要明确说明您正试图做什么。我们不知道您在问什么。您是否希望字符串foo bar hello来自另一端-error找不到要匹配的文件?如果是,那是什么部分?喂-沃宁克斯怎么样?什么可以改变并且仍然匹配?给我们一些测试用例。如果不清楚,很抱歉!刚刚更新了澄清,是否要匹配以下字符串中的所有空白?富吧-bing@Kevin对或者更确切地说,我要匹配“foo-bar”,然后无视一切。我该如何解释空间?嗨!谢谢你的回答!不幸的是,如果我没有看错的话。该模式似乎假定在虚线前后只有一个空格。但是,虚线前的空格数可以更改。@Luming您的假设不正确。这可以处理仪表板周围空间的差异。但是,它确实假设y和z之间没有间距。明白了!我希望这不会对你要求太高,但是否可以简单地将-yz分为一组,将整个x分为另一组?@Luming我不担心这个。。。你似乎只想要m.group1,所以忽略第二个和第三个。该模式是正确的,但这是可能的-例如,.+\\s+-\\s++。但通过这种方式,如果前面有多个空格-,group1将包括这些空格。我的目标是忽略hello之后的所有空格。。。对岸
/(.*?)\s*\s-\s\w+\(\w*\)/
([^\n\r\u2028\u2029]*?) * - \w+\([^\n\r\u2028\u2029]*\)
- 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`