【发布时间】:2016-05-10 16:30:36
【问题描述】:
这里是 Groovy 2.4。我有一个我想匹配的字符列表,具体来说:
`;[]&?:()|
我的最佳尝试:
import java.util.regex.Matcher;
Matcher matcher
String illNameChars = /[`\/;\[\]&<>?:\()|-]+/
String input = "Bupo;dupo"
if(input) {
matcher = input =~ illNameChars
if(matcher.matches()) {
println "Illegal character detected!"
}
}
这适用于第一个字符(反引号“`”)和第二个字符(“;”),但不适用于第三个字符(“[”)......关于为什么的任何想法?
【问题讨论】:
-
由于不是字符串,直接转义右括号
/[`;[\]&<>?:()|]+/字符类解析的规则有点不同,元字符除了]之外都是字面量。