如何编写正则表达式模式以识别以特定字符开头和结尾的单词

时间:2019-05-22 10:08:45

标签: java regex

我想找到以@@ _开头和_ @@结尾的单词。需要将其编写为Java Regex模式。

示例:abcd erhjr @@_dhsdj_@@ dshdgj和aj edwyhu @@_dgayw_@@ nssd。

正则表达式应找到@@_dhsdj_@@@@_dgayw_@@

我尝试使用,

 Matcher m = Pattern.compile("@@_\b\S+?\b_@@").matcher(searchText);

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,例如

List<String> result = new ArrayList<>();
Matcher m = Pattern.compile("@@_\\S*?_@@").matcher(searchText);
while (m.find()) {
    result.add(m.group(0));
}

@@_\S*?_@@将与@@_相匹配,然后与0或多个非空白字符尽可能少地匹配,然后与_@@相匹配。

请参见regex demoJava demo

您可以考虑使用空格分割,然后从结果数组中获取以@@_开始并以_@@结尾的任何项目:

import java.util.stream.Collectors;
// ...
List<String> result = Arrays.stream(searchText.split("\\s+"))
            .filter(i -> i.startsWith("@@_") && i.endsWith("_@@"))
            .collect(Collectors.toList());

请参见Java demo