栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java正则表达式:重复组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java正则表达式:重复组?

最简单的方法是使用两步解决方案:1)首先,验证字符串,然后2)用您选择的定界符分割字符串:

String[] chunks = null;if (s.matches("\d{2}(?:,\d{2})*")) {    chunks = s.split(Pattern.quote(","));    System.out.println(Arrays.toString(chunks)); // => [12, 34, 98, 11]}

在此,

s.matches("\d{2}(?:,\d{2})*")
匹配以两位数字开头的整个字符串,然后匹配出现的0个或多个
,
和结尾的两位数字,然后
s.split(Pattern.quote(","))
用逗号分割该字符串。注意你不需要
^
$
美女主播与图案内
matches()
,因为该方法需要一个完整的字符串匹配。

如果必须使用单个regex来执行此操作,则
只有在字符串开头的字符串检查成功的情况下,才可以在字符串的开头和每个成功的先前匹配的结尾处使用多个匹配项:

(?:G(?!^),|^(?=d{2}(?:,d{2})*$))(d{2})

请参阅regex演示。

细节

  • (?:G(?!^),|^(?=d{2}(?:,d{2})*$))
    -前面成功匹配的结尾,然后是字符串()的
    ,
    (参见
    G(?!^),
    )或(
    |
    )开头,
    ^
    后跟两位数,然后是0或更多序列的a
    ,
    和两位数到字符串的末尾(参见
    d{2}(?:,d{2})*$
  • (d{2})
    -第1组:两位数

Java演示:

String s = "12,34,98,11";Pattern p = Pattern.compile("(?:\G(?!^),|^(?=\d{2}(?:,\d{2})*$))(\d{2})");Matcher m = p.matcher(s);List<String> results = new ArrayList<>();while(m.find()) {    results.add(m.group(1));}System.out.println(results); // => [12, 34, 98, 11]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号