我需要检查一组特殊的特殊字符:\$
或\,
出现在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中):
如果您只想测试比赛与否,可以使用:
正则表达式:(((?<=\\)\$)|(\\,))
结果: