我有一个字符串“任何标签$ @ ws2-role $ @ ws1-role”我希望有一个正则表达式来搜索以“$ @”开头并以“$ @”结尾或结尾的单词一条线。
例如,对于上面的输入,输出必须是ws2-role和ws1-role。
我尝试了下面的正则表达式,但我无法弄清楚如何为pattern2添加或运算符,以便它也可以考虑给出输出的行尾,例如$ @ | $。 $ @是要匹配的确切单词,$是直到行尾的。
String pattern1 = "$@";
String pattern2 = "$@";
Pattern pattern = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
Matcher matcher = pattern.matcher(tag);
// check all occurance
while (matcher.find()) {
System.out.println(matcher.group());
}
任何人都可以提供一些提示吗?
非常感谢提前
答案 0 :(得分:0)
试试这个
Pattern pattern = Pattern.compile("\\$@([^\\$@]+|$)");
CharSequence tag = "any tag$@ws2-role$@ws1-role";
Matcher matcher = pattern.matcher(tag);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
ws2-role
ws1-role
答案 1 :(得分:0)
您可以使用这个基于前瞻性的正则表达式:
String regex = "\\$@\\S+(?=\\$@|$)";