java - 如何为汉字编写正则表达式

标签 java selenium pattern-matching

我需要知道我们如何将汉字编译成下面的词 50,001 - 100,000 积分

例如:英文写法:50,001 - 100,000 点。这是英文写法

Pattern pattern = Pattern.compile("([A-Z]+\\s[A-Z]+)|(\\d+\\s(\\-|or)\\s(\\d|[a-z])+\\s"+Internationalization.getMessage("POINTS_RANGE_FILTER_POINTS")+")"

最佳答案

您可以使用 \p{L} Unicode 属性类来匹配任何 Unicode 字母。此外,您的模式需要进行一些调整以匹配整个数字。请参阅下面的修复:

\d+(?:,\d{3})*\s*(?:(?:-|or)\s*\d+(?:,\d{3})*\s*)?\p{L}+

参见 regex demo

在 Java 中:

String rx = "\\d+(?:,\\d{3})*\\s*(?:(?:-|or)\\s*\\d+(?:,\\d{3})*\\s*)?\\p{L}+";

注意:如果您不太关心正则表达式的精度(例如,当只提取这些子字符串时),您可以缩短 \\d+(?:,\\d{3})*\d[\d,]*。参见 another regex demo .

详情

  • \d+ - 一位或多位数字
  • (?:,\d{3})* - 和 3 位数字的 0+ 个连续序列
  • \s* - 0+ 个空格
  • (?:(?:-|or)\s*\d+(?:,\d{3})*\s*)? - 1 或 0 个序列(一个可选的) 匹配
    • (?:-|or) - - or or
    • \s* - 0+ 个空格
    • \d+(?:,\d{3})* - 上面的数字模式
    • \s* - 0+ 个空格
  • \p{L}+ - 1+ Unicode 字母。

关于java - 如何为汉字编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450570/

相关文章:

python - YouTube 中的 Requests 与 Selenium Python

pattern-matching - 在 OCaml 中比较两个整数列表

c - Automake + 库工具 : pattern rule for per-object CFLAGS?

regex - VBA Excel 如果出现在字符串开头,则替换数字的最后 2 位

java - 从 Java 应用程序调用类路径中的外部 jar

java - 如何获取时区的本地日期时间

java - Spring 4 @Value 其中属性默认值是 java 系统属性

java - 如何在 selenium webdriver 中使用 JXL 检查工作簿工作表是否存在?

java - Apache Tomcat 8 不工作。抛出 HTTP 状态 500 - java.lang.ClassNotFoundException : org. apache.jsp.index_jsp

java - 在 Java 中使用 selenium 等待元素加载时出现问题