繁体   English   中英

重构正则表达式模式-Java

[英]Refactor Regex Pattern - Java

我有以下aaaa_bb_cc字符串要匹配并写成正则表达式

\\\\w{4}+\\\\_\\\\w{2}\\\\_\\\\w{2} ,它可以正常工作。 有没有简单的正则表达式可以做到这一点?

您无需转义下划线:

\w{4}+_\w{2}_\w{2}

如果您仍然不捕获它们,那么可以折叠最后两个部分:

\w{4}+(?:_\w{2}){2}

但是不会变短。

(注意:如果愿意,请为Java字符串重新添加所需的反斜杠;我更喜欢在谈论正则表达式时忽略它们:))

是的,您可以只使用\\\\w{4}_\\\\w{2}_\\\\w{2}也可以使用\\\\w{4}(_\\\\w{2}){2}

看起来\\ w不需要下划线匹配,因此可以改用[a-zA-Z0-9]

[a-zA-Z0-9]{4}_[a-zA-Z0-9]{2}_[a-zA-Z0-9]{2}

我有时会做我所谓的“元正则表达式”,如下所示:

    String pattern = "x{4}_x{2}_x{2}".replace("x", "[a-z]");
    System.out.println(pattern); // prints "[a-z]{4}_[a-z]{2}_[a-z]{2}"

请注意,这不使用\\w ,它可以匹配下划线。 也就是说,您的原始模式将匹配"__________"

如果x确实需要用[a-zA-Z0-9]替换,则只需在一个地方(而不是3个地方)进行操作。

其他例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM