我有一个Java程序,如果其中包含连字符超过5次,则该字符串应与字符串匹配:
hello-hi-contains-more-than-five-hyphen
单词可以包含任何常规字符。
此示例中的正则表达式不匹配:
hi-hello-233-here-example
我试图这样写一个正则表达式:
.*-{6,}.*
但这是行不通的。
答案 0 :(得分:1)
答案 1 :(得分:0)
"...".matches("(?s)([^-]*-){6}.*")
(?s)
全部为点,.
也将匹配行分隔符,例如\r
和n
。( )
,6次{6}
,任何字符.
0次或多次*
[]
的组 not ^
包含-
,0次或多次*
,后跟-
< / li>
对于matches
,正则表达式必须覆盖整个字符串,因此,已经暗示了^
(开始)和$
(结束)。 (因此需要.*
)
答案 2 :(得分:0)
这里不需要昂贵的正则表达式,只需一个简单的split
和length
就可以了,即:
String subjectString = "hello-hi-contains-more-than-five-hyphen";
String[] splitArray = subjectString.split("-");
if(splitArray.length > 5){
System.out.println(subjectString);
}