正则表达式匹配特定字符之前的所有单词

时间:2017-01-06 17:19:39

标签: java regex

我需要在特定字符之前提取字符串中的所有单词,在本例中为冒号(:)。

例如:

String temp = "root/naming-will-look-like-this:1.0.0-SNAP";

从上面的字符串中我想返回:

  

"根" "命名" "将" "外观" "像" "这"

我对正则表达方式并不擅长,到目前为止我已经提出了这个问题。

\w+(?=:)

只返回冒号前面的一个单词(" this")。

我怎样才能检索所有单词?

提前致谢。

3 个答案:

答案 0 :(得分:4)

您可以使用这样的前瞻:

\w+(?=.*:)

RegEx Demo

\w+将匹配所有字词,前瞻(?=.*:)断言我们前面有:

答案 1 :(得分:1)

试试这个:

    String s = "root/naming-will-look-like-this:1.0.0-SNAP";
    s = s.replaceAll(":.*", "");
    String[] arr = s.split("\\W+");

答案 2 :(得分:0)

除了Java的角色类交集之外,使用\G锚点,您可以将单词存储到第一个捕获组中:

\G(\w+)[\W&&[^:]]*

这不会绕过输入字符串下方的多个冒号:

root/naming-will-look-like-this:1.0.0-SNAP:some-thing-else