我想找到以@@ _开头和_ @@结尾的单词。需要将其编写为Java Regex模式。
示例:abcd erhjr @@_dhsdj_@@
dshdgj和aj edwyhu @@_dgayw_@@
nssd。
正则表达式应找到@@_dhsdj_@@
和@@_dgayw_@@
。
我尝试使用,
Matcher m = Pattern.compile("@@_\b\S+?\b_@@").matcher(searchText);
答案 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 demo和Java 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。