我写了一个小测试来演示

@Test
public void missingPunctuationRegex() {
    Pattern punct = Pattern.compile("[\\p{Punct}]");

    Matcher m = punct.matcher("'");
    assertTrue("ascii puctuation", m.find());

    m = punct.matcher("‘");
    assertTrue("unicode puctuation", m.find());
}

第一个断言通过,第二个断言失败。您可能需要眯着眼睛才能看到它,但这是“左单引号”( U+2018 ),据我所知,应该将其作为标点符号覆盖。

我将如何匹配 Java 正则表达式中的所有标点符号?

最佳答案

您可以使用 UNICODE_CHARACTER_CLASS 标志使 \p{Punct} 匹配所有 Unicode 标点符号。

关于java - 正则表达式\p{Punct} 错过了 java 中的 unicode 标点符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23000150/

10-11 11:55