我有以下要匹配的aaaa_bb_cc字符串,并编写了一个正则表达式模式,如下所示
\\w{4}+\\_\\w{2}\\_\\w{2},并且它可以工作。有没有简单的正则表达式可以做到这一点?
发布于 2010-05-06 20:07:42
我有时会做我称之为“元正则表达式”的事情,如下所示:
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,它可以匹配下划线。也就是说,您的原始模式将与"__________"匹配。
如果真的需要用[a-zA-Z0-9]替换x,那么只需要在一个地方(而不是三个地方)进行。
其他示例
发布于 2010-05-06 19:53:22
你不需要转义下划线:
\w{4}+_\w{2}_\w{2}如果你没有捕捉到最后两个部分,你可以把它们折叠起来:
\w{4}+(?:_\w{2}){2}但不会变得更短。
(注意:如果您愿意,可以为Java字符串重新添加所需的反斜杠;在讨论正则表达式时,我倾向于省略它们:)
发布于 2010-05-06 19:54:49
是的,您可以只使用\\w{4}_\\w{2}_\\w{2},也可以使用\\w{4}(_\\w{2}){2}。
https://stackoverflow.com/questions/2780805
复制相似问题