이중 따옴표를 큰 따옴표로 바꾸십시오. html 속성

c# html html-agility-pack regex replace

문제

내 클라이언트가 일부 요소 특성을 가진 html 문자열을 나에게 제대로 전송하지 못하는 경우가 있습니다. 이렇게 :

<img src="../imgTest.jpg" alt="Something "quoted here, or here"">

이러한 사례를 다음과 같이 동적으로 변경하려면 어떻게해야합니까?

<img src="../imgTest.jpg" alt="Something 'quoted here, or here'">

이 html은 브라우저에 표시하지 말고 일부 작업을 수행해야합니다.

htmlAgilityPack을 사용하여 HTML 문제를 제어하고 있지만이 경우 HTML 문자열을 변경하고 원하는 것은 아닙니다.

<img src="../imgTest.jpg" alt="Something" quoted="" here,="" or="" here="">

HtmlAgilityPack을 사용하는 코드 :

var htmlDoc = new HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.LoadHtml(myHtmlStr);

var htmlError = htmlDoc.ParseErrors.SafeAny();

if (!htmlError)
    myHtmlStr = htmlDoc.DocumentNode.InnerHtml;

수락 된 답변

내 생각은 태그 안에 있고 속성 한정자가 아닌 경우 " 일치 " 하는 것입니다.

면책 조항 :이 솔루션은 100 %의 경우에는 작동하지 않을 수 있습니다 (요소 / 속성 이름에 네임 스페이스가 추가 된 경우 적용이 필요합니다). < 바로 뒤에 따옴표가 오면 태그 이름이 속성 값 한정자로 사용됩니다 , < 기호 안에는 < 기호가 없습니다.

용도

(?<=<\w+\b[^<]*)(?<!\w+=)"(?!\s*/?>|\s+\w+=")

및 witha의 교체 ' .

regex 데모를보십시오 .

첫 번째 lookbehind는 double quote를 태그로 검색하고, 두 번째 단어가 큰 따옴표 바로 앞에 등호가 올 경우 일치하지 않으며 두 번째 따옴표를 따라 가면 부정적 lookahead가 실패합니다 공백 문자는 닫는 꺽쇠 괄호 (아마 앞에 슬래시가 붙음) 또는 공백 문자 뒤에 등호가 오는 단어가 오는 경우에 사용됩니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow