字符串中的Java正则表达式连字符多次

时间:2018-12-11 14:28:35

标签: java regex match

我有一个Java程序,如果其中包含连字符超过5次,则该字符串应与字符串匹配:

hello-hi-contains-more-than-five-hyphen

单词可以包含任何常规字符。

此示例中的正则表达式不匹配:

hi-hello-233-here-example

我试图这样写一个正则表达式:

.*-{6,}.*

但这是行不通的。

3 个答案:

答案 0 :(得分:1)

如果要使用Regex,则可以尝试以下操作:

^(.*?-){6,}.*$

Live Example

答案 1 :(得分:0)

"...".matches("(?s)([^-]*-){6}.*")
  • (?s)全部为点,.也将匹配行分隔符,例如\rn
  • ( ),6次{6},任何字符. 0次或多次*
  • 字符集为[]的组 not ^包含-,0次或多次*,后跟- < / li>

对于matches,正则表达式必须覆盖整个字符串,因此,已经暗示了^(开始)和$(结束)。 (因此需要.*

答案 2 :(得分:0)

这里不需要昂贵的正则表达式,只需一个简单的splitlength就可以了,即:

String subjectString = "hello-hi-contains-more-than-five-hyphen";
String[] splitArray = subjectString.split("-");
if(splitArray.length > 5){
    System.out.println(subjectString);
}

Java Demo