2012-09-12 3 views
1

HTML 인코딩 된 문자열에서 패턴을 인식하는 데 도움이 필요합니다.C#에서 단어를 추출하는 패턴 인식 인코딩 된 문자열

나는 HTML 인코딩 된 문자열이 같이있는 경우 :

string [email protected]"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>" 

나는 단어를 추출해야 [[@ 코드 1]], [CODE2 @] [[CODE3이] @], 즉 동적 그들의 수는 알려지지 않았습니다. 이 단어는 제공된 HTML 텍스트에서 다른 값으로 대체하는 데 사용되었습니다.

나는 나중에 데이터베이스에서 관련 값을 가져 오기 위해이 값을 처리 할 수 ​​있도록, 패턴을 인식 [[] 뭔가 @] 등 어레이의 모든 발생을 채우려.

+0

정규식을 원한다는 소리가납니다. –

+0

@lc, 네, 그걸 말할 수 있습니다 ... – Cyberpks

답변

4
string [email protected]"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>"; 
var input = HttpUtility.HtmlDecode(strHTMLText); 
var list = Regex.Matches(input, @"\[\[@(.+?)\]\]") 
    .Cast<Match>() 
    .Select(m => m.Groups[1].Value) 
    .ToList(); 
+1

정확한 솔루션을 위해 고맙습니다. 구현하기가 정말 쉽고 빠릅니다. – Cyberpks

0

누군가가 당신을 위해 이런 짓을 재미를 위해, 정규식 솔루션과 함께 제공까지 :

output.ToArray(); 
+0

Superfast 도움을 주셔서 감사합니다 ... :), 지금 당신의 해결책을 시도해 보겠습니다. – Cyberpks

0

당신은 정기적으로 사용할 수 있습니다

string [email protected]"&lt;p&gt;Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.&lt;/p&gt;"; 

IEnumerable<string> arr = strHTMLText.Split(new char[] {'['}; 
List<string> output = new List<string>(); 
foreach(var item in arr) 
{ 
string placeHolder = item.Substring(0,item.IndexOf("]"); 
output.Add(placeHolder); 
} 

가 배열로 출력을 얻으려면 표현.

내가하지만이 코드를 테스트하지 않은이 표현

Regex exp = new Regex("\[.+?\]") 
MatchCollection mc = exp.matches(<Your string here>); 
foreach(Match m in mc) 
{ 
    String code = m.value; 
} 

를 사용하여 시도하고 그렇게 나와 함께 곰하시기 바랍니다 신속하고 더러운 의사 코드입니다.