gpt4 book ai didi

java - 根据模式查找文件的正则表达式出错

转载 作者:行者123 更新时间:2023-12-01 12:26:41 25 4
gpt4 key购买 nike

我需要在正则表达式中开发此模式:

模式:

201410021600(12 Numbers)-Only two options A or B_(ZZ always same)616048(6 numbers)_BBBB(4 characters)-123456ABCDEF(12 alfanumeric)_OUT(always same).pdf(always same)

真实例子:

201410021600-A_ZZ123456_BBBB-123456ABCDEF_OUT.pdf.

这是我的尝试,但没有成功:(:

\d{12}-{1}A_{1}\bZZ\b\d{6}_{1}\d{4}-{1}\w{12}_{1}\bOUT.pdf\b

有人可以帮助我吗?

最佳答案

您无需指定 1 的数量,即只需 - 即可代替 -{1}_{1}_ 就足够了。

此外,您在此处指定了两次数量:\d{6}{1},这是不必要的。

第三,\b 标记单词边界,这意味着至少需要一些空格。因此 \bZZ\b 将与您的输入不匹配。

应用所有这些,您的正则表达式看起来像这样并且应该可以工作:\d{12}-[AB]_ZZ\d{6}_[A-Z]{4}-[A-Z0-9]{ 12}_OUT\.pdf

分解:

  • 201410021600(12个数字) -> \d{12}
  • -只有两个选项 A 或 B -> -[AB] 更新:从您的评论来看,好像 A B 是单词而不仅仅是字符,因此您不能在此处使用字符类,而需要使用组,例如-(?>A|B) ((?>...) 表示该组是非捕获的,即您无法使用 Matcher 检索它.group(x) 等)
  • _(ZZ 始终相同) -> _ZZ
  • 616048(6个数字)-> \d{6}
  • _BBBB(4 个字符) -> _[A-Z]{4}(我假设只允许使用大写字符)
  • -123456ABCDEF(12 字母数字) -> -[A-Z0-9]{12}(如果只允许使用大写字符)
  • _OUT(始终相同) -> _OUT
  • .pdf(始终相同) -> \.pdf(点匹配任何字符,因此需要转义)

如果大小写不重要,即如果 201410021600-a_zz123456_bbbb-123456abcdef_out.pdf. 也应该匹配,则将 a-z 添加到应该允许的字符类中小写(例如 [a-zA-Z] 而不是 [A-Z])或在表达式前面添加 (?i)如果始终允许小写。

关于java - 根据模式查找文件的正则表达式出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276239/

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