의 잘못된 번호 캡처 :이 정규식 그룹
FREQ = 매주, WKST = MO; BYDAY = 2TU, 2WE
내가 캡처 할 2 그룹 :
grp 1: 2, 2
grp 2: TU, WE
숫자는 간격을 나타냅니다. TU, 우리는 평일을 나타냅니다. 나 둘 다 필요해.
private final static java.util.regex.Pattern regBYDAY = java.util.regex.Pattern.compile(".*;BYDAY=(?:([+-]?[0-9]*)([A-Z]{2}),?)*.*");
String rrule = "FREQ=WEEKLY;WKST=MO;BYDAY=2TU,2WE";
java.util.regex.Matcher result = regBYDAY.matcher(rrule);
if (result.matches())
{
int grpCount = result.groupCount();
for (int i = 1; i < grpCount; i++)
{
String g = result.group(i);
...
}
}
grpCount의 == 2 - 이유 :
은이 코드를 사용하고 있습니다? 자바 문서를 올바르게 읽으면 (저 조금) 5를 얻어야합니까? 0 = 전체 식, 1,2,3,4 = 내 캡처 2,2, TU와 WE.
result.group (1) == "2";
저는 Java가 거의없는 C# 프로그래머이므로 RegEx를 테스트하기위한 훌륭한 C# 프로그램 인 "Regular Expression Workbench"에서 RegEx를 테스트했습니다. 저기 RegEx가 잘 작동합니다.
https://code.msdn.microsoft.com/RegexWorkbench
RegExWB :
.*;BYDAY=(?:([+-]?[0-9]*)([A-Z]{2}),?)*.*
Matching:
FREQ=WEEKLY;WKST=MO;BYDAY=22TU,-2WE,+223FR
1 => 22
1 => -2
1 => +223
2 => TU
2 => WE
2 => FR
는 잘 모르겠어요 무엇을 도구는 자바에서 필요한 것을하기 위해 사용할 수 있지만, 단서는 정규 표현식에는'([+ -]? [0-9] *)'와'([AZ] {2})' – Johrn
예 - 사실입니다. 하나는 Interval, 하나는 Weekday입니다. C#에서 (.net) 정규식에 더 많은 히트가있을 경우 캡처 그룹에 결과 배열을 가져옵니다. RegExWB 샘플과 같습니다. 그룹 1에는 3 개의 명중, 그룹 2 또한있다. 이것은 Java에서도 가능합니까? – Arthur