我知道在正则表达式中,\s
可以匹配所有whitepsaces (space, tabs ...)
,\d
任意数字等等。
是否有相同的快捷方式匹配所有不同的引号: ' " “ ” ‘ ’ „ ” « »
?
我可以编写自己的正则表达式,但我可能会错过其他语言的引号,所以我希望有一种通用的方法来匹配所有的引号。
但可能他们被认为是不同的角色,这是不可能的?
答案 0 :(得分:5)
答案 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)