匹配 à 和 À 的不区分大小写的正则表达式
Case insensitive regex matching both à and À
我遇到了像 /(?i)À/
这样与大小写无关的正则表达式与像 à
这样的小写行不匹配的问题。
我在代码中检查了这一点并确保 "À".toLowerCase() == "à"
不区分大小写的正则表达式是否仅适用于英语(或拉丁语)字符?
这是应该 return 正确但 return 错误的代码示例
Pattern.compile("À", Pattern.CASE_INSENSITIVE).matcher("à").matches()
在java中,您可以指定标志Pattern.CASE_INSENSITIVE
和Pattern.UNICODE_CASE
,即:
final Pattern pattern = Pattern.compile("À", Pattern.CASE_INSENSITIVE |
Pattern.UNICODE_CASE);
与Pattern.CASE_INSENSITIVE
:
When this flag is specified then case-insensitive matching, when enabled by the CASE_INSENSITIVE
flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched.
换一种方式,您可以使用嵌入的标志表达式。即:
final Pattern pattern = Pattern.compile("(?iu)À");
嵌入标志表达式可以包括CASE_INSENSITIVE
, MULTILINE
, DOTALL
, UNICODE_CASE
, CANON_EQ
, UNIX_LINES
, LITERAL
, UNICODE_CHARACTER_CLASS
and COMMENTS
.
接下来,您可以使用相应的嵌入标志(如果存在)的标志列表::
+-------------------------+------+
| UNIX_LINES | (?d) |
| CASE_INSENSITIVE | (?i) |
| COMMENTS | (?x) |
| MULTILINE | (?m) |
| LITERAL | |
| DOTALL | (?s) |
| UNICODE_CASE | (?u) |
| CANON_EQ | |
| UNICODE_CHARACTER_CLASS | (?U) |
+-------------------------+------+
我遇到了像 /(?i)À/
这样与大小写无关的正则表达式与像 à
这样的小写行不匹配的问题。
我在代码中检查了这一点并确保 "À".toLowerCase() == "à"
不区分大小写的正则表达式是否仅适用于英语(或拉丁语)字符?
这是应该 return 正确但 return 错误的代码示例
Pattern.compile("À", Pattern.CASE_INSENSITIVE).matcher("à").matches()
在java中,您可以指定标志Pattern.CASE_INSENSITIVE
和Pattern.UNICODE_CASE
,即:
final Pattern pattern = Pattern.compile("À", Pattern.CASE_INSENSITIVE |
Pattern.UNICODE_CASE);
与Pattern.CASE_INSENSITIVE
:
When this flag is specified then case-insensitive matching, when enabled by the
CASE_INSENSITIVE
flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched.
换一种方式,您可以使用嵌入的标志表达式。即:
final Pattern pattern = Pattern.compile("(?iu)À");
嵌入标志表达式可以包括CASE_INSENSITIVE
, MULTILINE
, DOTALL
, UNICODE_CASE
, CANON_EQ
, UNIX_LINES
, LITERAL
, UNICODE_CHARACTER_CLASS
and COMMENTS
.
接下来,您可以使用相应的嵌入标志(如果存在)的标志列表::
+-------------------------+------+ | UNIX_LINES | (?d) | | CASE_INSENSITIVE | (?i) | | COMMENTS | (?x) | | MULTILINE | (?m) | | LITERAL | | | DOTALL | (?s) | | UNICODE_CASE | (?u) | | CANON_EQ | | | UNICODE_CHARACTER_CLASS | (?U) | +-------------------------+------+