[英]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.