8
我想捕获匹配输入可以包含此组的一个或多个模式的组。正则表达式:捕获一个或多个组(如果存在)(Java)
例子:
input = 12361 randomstuff371 12 Mar 16 138more random381 stuff73f
我想捕捉的 “16年3月12日”。
从这个我很容易地使用正则表达式:
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()
来处理它来计算我需要的组数。
任何帮助将不胜感激。
这是因为前后的'。*'。不要这样做。 –
@詹姆斯,请考虑接受答案,如果它适合你(请参阅[如何接受所有答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) )。 –