code

문자열에서 HTML 태그를 제거하는 정규식

codestyles 2020. 10. 31. 09:44
반응형

문자열에서 HTML 태그를 제거하는 정규식


중복 가능성 :
HTML 태그를 제거하는 정규식

두 HTML 태그 사이에 값을 가져 오는 표현식이 있습니까?

이것을 감안할 때 :

<td class="played">0</td>

태그를 0제거하여 반환 할 표현식을 찾고 <td>있습니다.


정규식을 사용하여 HTML을 구문 분석하지 마십시오. HTML은 일반 언어가 아니므로 어떤 정규식도 일부 난해한 경우에 실패 할 수 있습니다. 자세한 내용은 이 질문에 대한 중요한 답변을 참조하십시오 . 대부분은 농담 형식이지만 매우 좋은 지적입니다.


다음 예제는 Java이지만 정규식은 다른 언어의 경우 동일하지는 않지만 비슷합니다.


String target = someString.replaceAll("<[^>]*>", "");

비 HTML에 <또는>가없고 입력 문자열이 올바르게 구조화되었다고 가정합니다.

특정 태그라는 것을 알고 있다면-예를 들어 텍스트에 <td>태그 만 포함되어 있다는 것을 알고 있다면 다음과 같이 할 수 있습니다.

String target = someString.replaceAll("(?i)<td[^>]*>", "");

편집 : Ωmega는 다른 게시물에 대한 의견에서 여러 태그가 있으면 여러 결과가 모두 함께 뭉개 질 것이라는 좋은 점을 제기했습니다.

예를 들어 입력 문자열이 <td>Something</td><td>Another Thing</td>이면 위의 결과는 SomethingAnother Thing.

여러 태그가 예상되는 상황에서 다음과 같이 할 수 있습니다.

String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("\\s+", " ").trim();

이것은 HTML을 단일 공백으로 바꾼 다음 공백을 축소 한 다음 끝 부분을 자릅니다.


사소한 접근 방식은

<[^>]*>

아무것도없이. 그러나 입력이 얼마나 잘못 구조화되었는지에 따라 실패 할 수 있습니다.


jsoup http://jsoup.org/로 할 수 있습니다.

Whitelist whitelist = Whitelist.none();
String cleanStr = Jsoup.clean(yourText, whitelist);

참고 URL : https://stackoverflow.com/questions/11229831/regular-expression-to-remove-html-tags-from-a-string

반응형