首页 > 解决方案 > 使用 JAVA 查找正则表达式模式

问题描述

我需要一个正则表达式来表示以下内容:

9845d530c7594ab45e8b905bbff

它应该总是以 984 开头,然后有一个 UUID,最大长度应该是 27。这里是 5d530c7594ab45e8b905bbff(UUID)。我知道 UUID,但我不知道如何将它组合在一起。对于从 984 开始,它应该是 ^984 并且对于特定长度,它应该是 \d{27} 但我不确定 UUID(这里应该不区分大小写)。

标签: javaregex

解决方案


^984[0-9a-fA-F]{24}$

快速解释:

  • ^984必须以“984”开头
  • [...]{24}$与给定字符集匹配的 24 个字符,然后结束
  • [0-9a-fA-F]包含任何数字 0-9、字符 af 或字符 AF 的字符集

您也可以\d对数字部分使用字符类(必须是单个数字),但我喜欢明确,否则我的大脑会受伤。如果您正在针对可能具有多个数字表示的未知字符集运行字符类,则很有用。例如,\d可能匹配阿拉伯数字 (٠‎ ١‎ ٢‎ ٣‎ ٤‎ ٥‎ ٦‎ ٧‎ ٨‎ ٩) 或梵文数字 (० १ २ ३ ४ ५ ६ ७ ८ ९)。

还有一些正则表达式“修饰符”允许不区分大小写,而不必在字符集中指定大小写。它确实取决于您使用的正则表达式实现。

Java 的内置正则表达式库有一个修饰符标志:

Pattern.compile("^984[0-9a-f]$",CASE_INSENSITIVE);

推荐阅读