java 正则 一个或多个_正则表达式:捕获一个或多个组(如果存在)(Java)

作者探讨了如何使用正则表达式在一个输入中匹配并捕获不确定数量的日期格式(如12月16日),同时处理可能存在的多个组。他们提到尝试了不同的模式,但遇到了问题,并考虑了如何存储和遍历这些捕获的组。解决方案可能涉及动态查找和计数匹配的日期段。
摘要由CSDN通过智能技术生成

我想捕获匹配模式的组,其中输入可以包含该组一次或多次.

例:

input = 12361 randomstuff371 12 Mar 16 138more random381 stuff73f

我想拍摄“12月16日”.

从这里我很容易使用正则表达式:

pattern = (".*(\\d{2}\\s\\w+\\s\\d{2}).*");

但是我的麻烦是,当输入可以包含多个这些组时,我无法捕获后续匹配.

例:

input = randomstuff371 12 Mar 16 14 Jan 15 13 Feb 16 138more random381 stuff73f

这样:

group 1 = 12 Mar 16

group 2 = 14 Jan 15

group 3 = 13 Feb 16

要匹配的这些组的数量总是会有所不同,所以我想知道是否有一个正则表达式适用于包含这些组中的一个或多个的输入.我试过了:

pattern = (".*(\\d{2}\\s\\w+\\s\\d{2}\\s)+.*"); \\ Not sure about whitespace at the end

但它不起作用.这更多地与我如何存储这些捕获的组有关吗?我不能预先确定我需要的组的数量,特别是因为正则表达式需要处理许多这些输入.

我觉得好像我最好捕获整个日期段并稍后用matcher.find()处理它来计算我需要的组数.

任何帮助都感激不尽.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值