首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模式查找文件正则表达式中的错误

模式查找文件正则表达式中的错误
EN

Stack Overflow用户
提问于 2014-10-09 10:35:14
回答 3查看 43关注 0票数 0

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

模式:

201410021600(12个数字)-Only两个选项A或B_(ZZ始终相同)616048(6个数字)_BBBB(4个字符)-123456ABCDEF(12个数字)_OUT(始终相同).pdf(始终相同)

实际例子:

201410021600-A_ZZ123456_BBBB-123456ABCDEF_OUT.pdf.

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

代码语言:javascript
复制
\d{12}-{1}A_{1}\bZZ\b\d{6}_{1}\d{4}-{1}\w{12}_{1}\bOUT.pdf\b

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-09 10:41:34

您不需要为1指定一个数量,也就是说,只需要-{1}_{1},只要-_就足够了。

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

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

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

要把它分解:

  • 201410021600(12 Numbers) -> \d{12}
  • -Only two options A or B -> -[AB] UPDATE:从您的评论中可以看出,AB似乎都是单词,而不仅仅是字符,因此您不能在这里使用字符类,而需要使用组,例如-(?>A|B) ((?>...)表示组不捕获,即不能使用Matcher.group(x)等)。
  • _(ZZ always same) -> _ZZ
  • 616048(6 numbers)-> \d{6}
  • _BBBB(4 characters) -> _[A-Z]{4} (我假设只允许大写字符)
  • -123456ABCDEF(12 alfanumeric) -> -[A-Z0-9]{12} (如果只允许大写字符)
  • _OUT(always same) -> _OUT
  • .pdf(always same) -> \.pdf (点匹配任何字符,因此需要转义)

如果大小写不是问题,即如果201410021600-a_zz123456_bbbb-123456abcdef_out.pdf.也应该匹配,那么在应该允许小写(例如[a-zA-Z]而不是[A-Z])的字符类中添加a-z,或者在表达式前面添加(?i) (如果总是允许小写)。

票数 1
EN

Stack Overflow用户

发布于 2014-10-09 10:40:43

尝试以下模式:

代码语言:javascript
复制
Pattern p =Pattern.compile("\\d{12}-[AB]_ZZ\\d{6}_\\w{4}-\\w{12}_OUT.pdf");
票数 0
EN

Stack Overflow用户

发布于 2014-10-09 10:41:31

代码语言:javascript
复制
^\d{12}-[AB]_ZZ\d{6}_[a-zA-Z]{4}-[a-zA-Z0-9]{12}_OUT\.pdf$

试试this.Validates你所有的规则。

http://regex101.com/r/iM2wF9/19

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26276239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档