gpt4 book ai didi

java - 与任何语言的 java 8 正则表达式字符串匹配

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:12 25 4
gpt4 key购买 nike

我尝试匹配任何语言的 java 8 正则表达式字符串

只要包含字母、数字和即可。-

String s = "בלה בלה";
String pattern= "^[\\p{L}\\p{Digit}_.-]*$";
return s.matches(pattern);

我错过了什么,因为此代码为希伯来语有效字符串返回 null。

最佳答案

您可以在您的模式中添加一个空格,并在传递 Pattern 时使用 \w 而不是 \p{L}\p{Digit}_ .UNICODE_CHARACTER_CLASS 标志:

String s = "בלה בלה";
String pattern= "(?U)[\\w\\s.-]*";
System.out.println(s.matches(pattern));
// => true

参见 Java demo

由于模式在 String#matches() 方法中使用,因此 ^$ anchor 不是必需的。如果您计划将模式与 Pattern#find() 方法一起使用,请将模式包含在 anchor 内,就像在原始代码中一样 ("^(?U)[\\w\\s .-]*$").

图案细节:

  • (?U) - Pattern.UNICODE_CHARACTER_CLASS 嵌入式修饰符标志,使速记字符类可识别 Unicode(您可能会看到 \w匹配此模式)
  • [\\w\\s.-]* - 零个或多个:
    • \w - 单词字符(字母、数字、_ 等等)
    • \s - 空格
    • . - 一个点(不需要在字符类中转义它)
    • - - 一个连字符(不需要,因为它位于字符类的末尾)

关于java - 与任何语言的 java 8 正则表达式字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com