我有以下aaaa_bb_cc
字符串匹配并编写了像
\\w{4}+\\_\\w{2}\\_\\w{2}
它有效。是否有任何简单的正则表达式可以做到这一点?
答案 0 :(得分:3)
您无需转义下划线:
\w{4}+_\w{2}_\w{2}
如果你还没有抓住它们,你可以折叠最后两部分:
\w{4}+(?:_\w{2}){2}
但不会变短。
(注意:如果你愿意,可以为Java的字符串重新添加所需的反斜杠;我更喜欢在谈论正则表达式时省略它们)))
答案 1 :(得分:2)
是的,您可以只使用\\w{4}_\\w{2}_\\w{2}
或\\w{4}(_\\w{2}){2}
。
答案 2 :(得分:2)
您的\ w看起来不需要匹配下划线,因此您可以使用[a-zA-Z0-9]
代替
[a-zA-Z0-9]{4}_[a-zA-Z0-9]{2}_[a-zA-Z0-9]{2}
答案 3 :(得分:2)
我有时按照以下方式做“meta-regexing”:
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个地方)进行替换。