2011-11-23 5 views
0

정규식에서 html 코드를 이스케이프 처리하려면 어떻게해야합니까?정규식 C에서 이스케이프 처리 된 HTML 일치 #

나는 내가 태그와 함께 작동해야 할 원인 나는이 목적을 위해 대해 HTMLEncode/디코드를 사용할 수 없습니다

this is my string & this is another string 

같은 문자열의 문자열을

& 

을 찾을 필요가있다. 내가 원하는 것은 공통 문자열을 찾는 것뿐입니다.

"another"또는 "my"와 같이 작동하지만 "&"과 작동하지 않습니다. 구글은 & 또는 "AND"단어로 문자열을 바꾸기 때문에

  Regex regularextest = new Regex("\b&\b", options); 
      string RSTest = "char $& morechar"; 
      string lalala = regularextest.Replace("foo & bar", RSTest); 

그것은 매우 실망입니다. &; 단어의 문자 수 없기 때문에 미리

+2

왜 문자열의 정상'.Replace()'와 반대되는 정규식을 사용해야합니까? – recursive

+0

또한 MSDN에서 & and ;은 C#의 Regex를위한 특수 문자가 아닙니다. –

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/를 참조하십시오. 1732454 # 1732454 정확한 복제본이 아니라는 것을 알고 있지만 귀하의 질문에 대한 답변입니다. 이스케이프 처리 된 html 구문 분석에서도 동일한 제한이 있습니다. – David

답변

2

에서

덕분에이 \b&\b가 일치하지 않습니다.

이 작업을 시도 할 수 있습니다 : 당신이 확인해야하는 경우

Regex regularextest = new Regex("(?<=^|\s+)&amp;(?=\s+|$)", options); 
+0

나는 결코 그것을 생각하지 않는다. .. 물론 ... 아마 그것일지도 모른다. 그것을 시도하자! :) 팁 고마워. –

+0

@Leandro No prob : – FailedDev

+0

당신은 Regex ... 천재의 주인입니다! 고마워요. :) –

0

/유효 실체 (비 유니 코드)로 변환, 당신은 대체 가능한 값을 식별하기 위해 정규식
(?:&(?:[A-Za-z_:][\w:.-]*|\#(?:[0-9]+|x[0-9a-fA-F]+));)
를 사용할 수, 패스 바꾸려는 엔티티를 추가로 처리하는 콜백 함수에 전달합니다. 이 방법은 모두 하나의 regex global replace (콜백 로직 포함)에서 수행 될 수 있습니다.