我有一个 Java 程序,如果它包含超过 5 次的连字符,它应该匹配一个字符串:hello-hi-contains-more-than-five-hyphen单词可以包含任何常规字符。此示例中的正则表达式不应匹配:hi-hello-233-here-example我试着写一个这样的正则表达式:.*-{6,}.*但它不起作用。
3 回答
动漫人物
TA贡献1815条经验 获得超10个赞
这里不需要昂贵的正则表达式,一个简单的split就 length可以了,即:
String subjectString = "hello-hi-contains-more-than-five-hyphen";
String[] splitArray = subjectString.split("-");
if(splitArray.length > 5){
System.out.println(subjectString);
}
阿波罗的战车
TA贡献1862条经验 获得超6个赞
"...".matches("(?s)([^-]*-){6}.*")
(?s)
dot-all,.
也将匹配行分隔符,如\r
andn
。group
( )
, 6 次{6}
, 任意 char.
0 次以上*
字符集
[]
不^
包含-
0 次或更多次的组*
,然后是-
因为matches
正则表达式必须覆盖整个字符串,所以^
(start) 和$
(end) 已经隐含。(因此需要.*
)
添加回答
举报
0/150
提交
取消