문제
나는 어디에서 재성분을 가지고있다
%word% can occur multiple times, separated by a "<"
% 단어%는 다음과 같이 정의됩니다 ".*?"|[a-zA-Z]+
그래서 나는 썼다
(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*
캡처 그룹을 사용하여 축소 할 수있는 방법이 있습니까?
(".*"|[a-zA-Z]+)([<]\1)*,
그러나 나는 생각하지 않습니다 \1
인용 된 문자열이나 단어 일 수 있으므로 캡처 된 것을 알지 못하기 때문에 첫 번째 캡처를 반복한다는 의미로 사용할 수 있습니다.
이전에 기록 된 그룹과 일치하는 데 사용할 수있는 유사한 것. 나는 C#에서 일하고있다.
해결책 2
이 기능에 대한 지원이 아직 없으므로 문자열 교체기를 만들었습니다. 여기서 %%를 사용하여 Regex로 대체 해야하는 특정 단어를 작성한 다음 텍스트에 정의 된 정규 표현식으로 대체하기 위해 프로그램을 작성했습니다.
다른 팁
string.format를 사용하여 반복을 피하고 리그 그룹을 문자 그대로 반복 할 방법이 없습니다.
String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
제휴하지 않습니다 StackOverflow