我有一个相当简单的RegEx,它没有按照我的预期去做。
我希望RegEx与单字母字符串匹配,如果它们是您在表情符号中常见的几个元素之一,例如括号,冒号等
我偶然发现了一个问题标记导致我的RegEx火灾并且我不明白为什么。
我使用的是Java 8(Oracle),并针对我的问题进行了Junit测试:
@Test
public void test(){
assertFalse(Pattern.matches("[:;-pP8xXdD\\(\\)]", "?"));
}
它应该评估为false,但它匹配,为什么?
答案 0 :(得分:4)
;-p
部分定义了从;
(59)到p
(112)的ASCII字符范围。这包括?
(63)。 Reference
要解决此问题,请将-
放在字符组的开头/结尾([]
),或使用\
转义。