【发布时间】:2021-05-20 12:47:42
【问题描述】:
我正在编写一个正则表达式来支持大小写字母、数字、- 和 00C0-00FF 范围内的 Unicode 字符。
我已经看到解释使用正则表达式支持所有语言字符的答案 \p{L}+ 但我不想支持所有语言字符。我只想支持来自 URL https://unicode-table.com/en/blocks/latin-1-supplement/ 的特定范围 [00C0-00FF] 的 Unicode 字符
我在网站https://regex101.com/ 上使用模式[A-Za-z0-9\x{00C0}-\x{00FF}'’\- ]{1,70} 测试了我的示例字符串O’Donnell À Ö ö Ì ÿ 012
但是这种模式[A-Za-z0-9\x{00C0}-\x{00FF}'’\- ]{1,70} 在 java 中不起作用。请您支持我为 Java 编写等效模式。
我用来测试正则表达式的示例代码 -
public static void main(String... args) {
Pattern p = Pattern.compile("[A-Za-z0-9\\x{00C0}-\\x{00FF}'’\\- ]{1,70}",
Pattern.UNICODE_CHARACTER_CLASS);
Matcher m = p.matcher("O’Donnell À Ö ö Ì ÿ 012");
boolean b = m.matches();
System.out.println("value=" + b);
}
【问题讨论】: