我需要检查一组特殊的特殊字符:\$\,出现在String中。
例;

  1) \\ghg$ : invalid
  2) \\ghg\\$ : valid
  3) ghg$ : invalid
  4) \\ghg\\,$ : invalid. Here $ is not escaped
  5) ghg\\,\\$ : valid


下面是代码,

private static void regexValidation(String text, String pattern) {
        System.out.println(text + " and pattern " + pattern + " used" + ":" + text.matches(pattern) + " with pattern "
                + Pattern.compile(pattern).matcher(text).matches() + " with find "
                + Pattern.compile(pattern).matcher(text).find());
    }


使用的模式是pattern = ".*\\$.*";,没有得到预期的结果。正在使用".*\\B\\$\\B.*",但是在第四种情况下也失败。在Java中,有没有一种方法可以过滤特殊字符集?

最佳答案

似乎您的要求不是很明确:

根据您的\$ or \,,则\\ghg\\,$应该匹配,因为它包含与\\,匹配的\,

因此,如果您的要求是:匹配\$\,,则


正则表达式:((\\\$)|(\\,))
匹配结果(显示在https://regexr.com中):






如果您只想测试比赛与否,可以使用:


正则表达式:(((?<=\\)\$)|(\\,))
结果:

07-24 09:38
查看更多