特殊字符$的正则表达式

时间:2013-11-29 12:07:33

标签: java regex

我有一个字符串“任何标签$ @ 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());
    }

任何人都可以提供一些提示吗?

非常感谢提前

2 个答案:

答案 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+(?=\\$@|$)";