首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重构正则表达式模式- Java

重构正则表达式模式- Java
EN

Stack Overflow用户
提问于 2010-05-06 19:50:44
回答 4查看 426关注 0票数 1

我有以下要匹配的aaaa_bb_cc字符串,并编写了一个正则表达式模式,如下所示

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-06 20:07:42

我有时会做我称之为“元正则表达式”的事情,如下所示:

代码语言:javascript
复制
    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,那么只需要在一个地方(而不是三个地方)进行。

其他示例

票数 2
EN

Stack Overflow用户

发布于 2010-05-06 19:53:22

你不需要转义下划线:

代码语言:javascript
复制
\w{4}+_\w{2}_\w{2}

如果你没有捕捉到最后两个部分,你可以把它们折叠起来:

代码语言:javascript
复制
\w{4}+(?:_\w{2}){2}

但不会变得更短。

(注意:如果您愿意,可以为Java字符串重新添加所需的反斜杠;在讨论正则表达式时,我倾向于省略它们:)

票数 3
EN

Stack Overflow用户

发布于 2010-05-06 19:54:49

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

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

https://stackoverflow.com/questions/2780805

复制
相关文章

相似问题

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