为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2022-03-10 10:53:30
我有一个 Java 程序,如果它包含超过 5 次的连字符,它应该匹配一个字符串:hello-hi-contains-more-than-five-hyphen单词可以包含任何常规字符。此示例中的正则表达式不应匹配:hi-hello-233-here-example我试着写一个这样的正则表达式:.*-{6,}.*但它不起作用。
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

如果您想使用正则表达式,那么您可以尝试以下方法:

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


查看完整回答
反对 回复 2022-03-10
?
动漫人物

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);

}


查看完整回答
反对 回复 2022-03-10
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

"...".matches("(?s)([^-]*-){6}.*")
  • (?s)dot-all,.也将匹配行分隔符,如\rand n

  • group ( ), 6 次{6}, 任意 char .0 次以上*

  • 字符集[]  ^包含-0 次或更多次的组*,然后是-

因为matches正则表达式必须覆盖整个字符串,所以^(start) 和$(end) 已经隐含。(因此需要.*


查看完整回答
反对 回复 2022-03-10
  • 3 回答
  • 0 关注
  • 247 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信