입력에이 그룹을 한 번 이상 포함 할 수있는 패턴과 일치하는 그룹을 캡처하고 싶습니다.Regex : 존재하는 경우 하나 이상의 그룹 캡처 (Java)
예 :
input = 12361 randomstuff371 12 Mar 16 138more random381 stuff73f
내가 "12 3월 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()
으로 처리하는 것이 좋습니다.
도움이 될 것입니다.
앞뒤의'. * '때문입니다. 그러지 마. –
@James, 당신을 위해 효과가 있다면 답변을 수락하는 것을 고려하십시오. ([SO 응답을받는 방법] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)을 참조하십시오.). –