0

我遇到了与大小写无关的正则表达式 like/(?i)À/与小写中的行不匹配的问题 like à

我在代码中检查了这个并确保"À".toLowerCase() == "à"

不区分大小写的正则表达式是否仅适用于英文(或拉丁文)字符?

这是应该返回true但返回false的代码示例 Pattern.compile("À", Pattern.CASE_INSENSITIVE).matcher("à").matches()

4

1 回答 1

3

中,您可以指定标志Pattern.CASE_INSENSITIVEPattern.UNICODE_CASE,即:

final Pattern pattern = Pattern.compile("À", Pattern.CASE_INSENSITIVE | 
                                             Pattern.UNICODE_CASE);

Pattern.CASE_INSENSITIVE

如果指定了这个标志,那么当标志启用时,不区分大小写的匹配CASE_INSENSITIVE以符合 Unicode 标准的方式进行。默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。

以另一种方式,您可以使用嵌入的标志表达式。IE:

final Pattern pattern = Pattern.compile("(?iu)À");

嵌入标志表达式可以包括CASE_INSENSITIVE, MULTILINE, DOTALL, UNICODE_CASE, CANON_EQ, UNIX_LINES, LITERAL,UNICODE_CHARACTER_CLASSCOMMENTS.

接下来,您可以使用相应的嵌入标志(如果存在)的标志列表:

+--------------+------+
| UNIX_LINES | (?d) |
| CASE_INSENSITIVE | (?i) |
| 评论 | (?x) |
| 多行 | (?m) |
| 字面| |
| 圆点 | (?s) |
| UNICODE_CASE | (?u) |
| CANON_EQ | |
| UNICODE_CHARACTER_CLASS | (?U) |
+--------------+------+
于 2017-05-24T17:20:02.637 回答