문자열의 맞춤 태그를 가져 와서 대체하는 우아한 방법은 무엇입니까? 예를 들어문자열에서 맞춤 태그를 가져 오는 우아한 방법
"some long text [o:prop] and [u:date]"
결과 어레이 :
- "[0 : 소품]"
- "[U : 일]"
감사
문자열의 맞춤 태그를 가져 와서 대체하는 우아한 방법은 무엇입니까? 예를 들어문자열에서 맞춤 태그를 가져 오는 우아한 방법
"some long text [o:prop] and [u:date]"
결과 어레이 :
감사
@"\[[a-z]:[a-z]{4}\]"
모든 대괄호로 둘러싸인 네 개의 소문자 다음에, 다음에 콜론 1 소문자를 가정 해보십시오.
흥미 롭습니다. 그러면 더 안전하게 보입니다. "\\ [(. *?)]"감사합니다. – Mennion
는
var replacements = new Dictionary<string,string> {
{"[o:prop]","FISH"},
{"[u:date]","2013-04-12"}
};
var testString = "some long text [o:prop] and [u:date]";
var result= new Regex(@"\[[^[]*?]").Replace(
testString,
match => replacements.ContainsKey(match.Value) ? replacements[match.Value] : match.Value);
점 스타를 사용하지 마십시오! (대괄호가 중첩되어 있으면 작동하지 않습니다.)'\ [. *? \]'가 문자열에 적용될 때 일치하는 것을 알 수 있습니다 :''some long [text [o : prop] and [a [u : date] ] "'? 당신이 생각하는 것이 아닙니다! 훨씬 빠르고 정확한 표현은'\ [[^ [\]] * \]'입니다. 당신이 말하는 것을 말하십시오 - 당신이 말하는 것을 의미합니다. – ridgerunner
@ridgerunner better? 비 욕심 많은 표현을 사용하는 경우 제외 할 필요가 없음 –
예, \ [[^ [] *?]'는'\ [. *? \]'보다 훨씬 낫습니다. (이제는 가장 안쪽의 일치하는 대괄호 쌍 정확하게). 그러나 탐욕스러운'\ [[^]] * \]'표현식은 브라켓 내용을 한 단계로 완성하기 때문에 훨씬 빠릅니다. 게으른 버전은 각 문자를 한 번에 하나씩 일치시키기 전에 멈추고 앞으로 (예 : 역 추적)해야합니다. – ridgerunner
태그 및 그 대체 태그 목록이 있습니까? –
예, 내 자신의 태그와 내 함수는 자신의 대체물을 반환합니다 – Mennion