2016-06-07 1 views
1

정규 표현식을 통과해야하는 html 문자열이 있습니다. 이 표현식은 MailChimp 태그를 다음 형식으로 검색해야합니다. *|TagName|*MailChimp 태그를 탐지하기 위해 정규 표현식이 필요합니다.

정규 표현식에 익숙하지 않습니다. 현재 사용하고있는 것은 다음과 같습니다. \*\|([^]]*)\|\*

그러나 정규 표현식은 일치 항목 2 개 중 문자열을 감지합니다. 우리가 이렇게하는 경우 :

"Sample text with user *|User_Name|*, to verify regular expression with *|Date_Value|*, and some other text",

경기는 다음과 같습니다

"*|User_Name|*, to verify regular expression with *|Date_Value|*" 

사람이 어떻게 발현 또는 무엇 별도로 모든 일치를 감지하는 대신 사용할 수를 변경하는 말해 할 수 있습니다.

감사합니다

+0

으로 일치하는 것으로 문자 \ * \ | \ w + \ | \ * – A191919

답변

2

이 정규 표현식을 시도하십시오 :

string source = 
    "Sample text with user *|User_Name|*, to verify regular expression with *|Date_Value|*, and some other text"; 

    string pattern = @"\*\|.*?\|\*"; // please, notice ".*?" instead of ".*" 

    // ["*|User_Name|*", "*|Date_Value|*"] 
    string[] matches = Regex 
    .Matches(source, pattern) 
    .OfType<Match>() 
    .Select(match => match.Value) 
    .ToArray(); 

트릭은 .*? 대신 .*의에 - 나는 그것이 도움이 될 것입니다 생각 수

+0

많은 감사합니다. 이것은 그것을 해결! –

+0

@M O H : 오신 것을 환영합니다! –

+0

직관적으로 정규 표현식'\ * \ | [^ * |] + \ | \ *'을 사용할 것입니다. 즉, 부정 문자 클래스를 사용하십시오. 늘어나는만큼 내가 결과를 거의 동일하게 말할 수 있습니다 (당신의 정규식은 빈 태그를 허락합니다). 무효 캐릭터 클래스보다 비 욕심 많은'?'를 사용하는 것이 이점이 있습니까? –

관련 문제