猿问

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

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

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

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

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

hi-hello-233-here-example

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

.*-{6,}.*

但它不起作用。


犯罪嫌疑人X
浏览 248回答 3
3回答

慕容3067478

如果您想使用正则表达式,那么您可以尝试以下方法:^(.*?-){6,}.*$

动漫人物

这里不需要昂贵的正则表达式,一个简单的split就 length可以了,即:String subjectString = "hello-hi-contains-more-than-five-hyphen";String[] splitArray = subjectString.split("-");if(splitArray.length > 5){    System.out.println(subjectString);}

阿波罗的战车

"...".matches("(?s)([^-]*-){6}.*")(?s)dot-all,.也将匹配行分隔符,如\rand n。group ( ), 6 次{6}, 任意 char .0 次以上*字符集[] 不 ^包含-0 次或更多次的组*,然后是-因为matches正则表达式必须覆盖整个字符串,所以^(start) 和$(end) 已经隐含。(因此需要.*)
随时随地看视频慕课网APP

相关分类

Java
我要回答