是否有正则表达式来获取所有引号?

时间:2017-09-13 07:38:56

标签: java regex quotation-marks

我知道在正则表达式中,\s可以匹配所有whitepsaces (space, tabs ...)\d任意数字等等。

是否有相同的快捷方式匹配所有不同的引号: ' " “ ” ‘ ’ „ ” « »

And more on Wikipedia ...

我可以编写自己的正则表达式,但我可能会错过其他语言的引号,所以我希望有一种通用的方法来匹配所有的引号。

但可能他们被认为是不同的角色,这是不可能的?

4 个答案:

答案 0 :(得分:5)

你可以使用正则表达式

['"“”‘’„”«»]

请参阅regex101 demo

答案 1 :(得分:0)

方法:

如果您不确定所有引号,那么您可以为除引号之外的其他内容编写正则表达式。另外明智地写下['"“”‘’„”«»]所有可能的引号。

答案 2 :(得分:0)

  

是否有相同的快捷方式匹配所有不同的引号

在Java ......或(AFAIK)中没有任何其他正则表达方式的短语。

  

我可以编写自己的正则表达式,但我可能会错过其他语言的引号,所以我希望有一种通用的方法来匹配所有的引号。

不幸的是,没有Unicode字符类包含所有"引用"字符。

并且没有基于字符名称的简单/保证启发式。

答案 3 :(得分:0)

Java Unicode支持有非常详细的支持,甚至可以对标点符号进行分类。但不适用于报价。并且有引号既不是起始引号也不是结尾引号。但是你可以收集它们并生成代码。优势:完整性。

    for (int cp = 32; cp <= 0xFFFF; ++cp) {
        String name = Character.getName(cp);
        if(name != null && name.contains("QUOTATION")) {
            System.out.printf("\\u%04x = %s (%s %s)%n",
                    cp, name,
                    Character.getType(cp) == Character.INITIAL_QUOTE_PUNCTUATION,
                    Character.getType(cp) == Character.FINAL_QUOTE_PUNCTUATION);
        }
    }

这会利用代码点几乎成为字符。因此不适用于亚洲脚本(在U + FFFF停留)。 这导致:

\u0022 = QUOTATION MARK (false false)
\u00ab = LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (true false)
\u00bb = RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (false true)
\u2018 = LEFT SINGLE QUOTATION MARK (true false)
\u2019 = RIGHT SINGLE QUOTATION MARK (false true)
\u201a = SINGLE LOW-9 QUOTATION MARK (false false)
\u201b = SINGLE HIGH-REVERSED-9 QUOTATION MARK (true false)
\u201c = LEFT DOUBLE QUOTATION MARK (true false)
\u201d = RIGHT DOUBLE QUOTATION MARK (false true)
\u201e = DOUBLE LOW-9 QUOTATION MARK (false false)
\u201f = DOUBLE HIGH-REVERSED-9 QUOTATION MARK (true false)
\u2039 = SINGLE LEFT-POINTING ANGLE QUOTATION MARK (true false)
\u203a = SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (false true)
\u275b = HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT (false false)
\u275c = HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT (false false)
\u275d = HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT (false false)
\u275e = HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT (false false)
\u275f = HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT (false false)
\u2760 = HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT (false false)
\u276e = HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT (false false)
\u276f = HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT (false false)
\u301d = REVERSED DOUBLE PRIME QUOTATION MARK (false false)
\u301e = DOUBLE PRIME QUOTATION MARK (false false)
\u301f = LOW DOUBLE PRIME QUOTATION MARK (false false)
\uff02 = FULLWIDTH QUOTATION MARK (false false)