【Ruby】 HTML 태그를 나타내는 정규 표현과 `gsub` 메소드 내에서의 활용 예
소개
요 전날 【Ruby】HTTPClient와 LINE Notify를 사용하여 터미널에서 문자열을 보내는 프로그램이라는 기사를 썼습니다.
그 중에서 사용하고 있는
HTTPClient
의 학습중에 <div>
이나 </div>
등 HTML 태그를 나타내는 정규 표현을 보고 「편리하다!」라고 느꼈기 때문에 정리했습니다!누군가의 참고가 되면 다행입니다.
이 기사가 도움이 되는 분
이 기사의 장점
gsub
메서드 사용법을 알 수 있습니다 환경
참고로 한 사이트
HTTPClient
튜토리얼 사이트에서.get_content
메소드의 사용 예 중에서 발견되었습니다.이하 링크의 「The get_content function」안에 써 있던 것입니다.
Ruby HTTPClient tutorial (영어)
HTML 태그를 나타내는 정규식
여기가 HTML 태그를 나타내는 정규식입니다.
%r{</?[^>]+?>}
이 코드를 순서대로 읽어 갑니다.
↓참조한 레퍼런스는 이쪽
정규식 (Ruby 2.6.0)
%r{정규 표현식}
{}
안은 /
등을 이스케이프하여 기술할 필요가 없다.HTML 태그는 닫는 태그에.
/
그대로
/正規表現/
를 나타낸다.%r{}
<
가 1개인가, 없는가?<
/?
를 붙인 문자는 제외된다.즉,
/
이외의 1 문자를 나타냅니다.「^>」
^
는 직전에 쓴 패턴이 「1개 이상」이라고 하는 의미입니다.>
이외의 문자가 1개 이상이라고 하는 것이군요.※2019/11/15 추가
이 기법은 「최소량 지정자(reluctant quantifier)」라고 하고, 매치가 성공하는, 최단의 캐릭터 라인에 매치 합니다.
이번 HTML 태그를 나타내는 케이스에서는
[^>]+?
라고 해도 같은 거동을 나타냅니다.@scivola 씨, 항상 감사합니다!
(다시 한 번) +?
"
>
부터 시작하여 [^>]+
가 있거나 없어도 좋고, 마지막 %r{</?[^>]+?>}
까지의 사이에 <
이외의 문자가 몇개 있다"그렇습니다.
즉,
/
인가 >
라고 하는 것!바로 HTML 태그입니다.
【활용 예】 > 메소드로 HTML 태그를 제거한다
(何らかのHTML).gsub(%r{</?[^>]+?>},'')
Ruby에서
<任意の文字列>
메서드는 문자열을 대체하는 메서드입니다.위 코드에서
</任意の文字列>
또는 gsub
를 gsub
로 바꾸기(삭제)하고 있습니다.
예를 들어 HTML 문서에서 HTML 태그를 제거하여 가독성을 향상시키는 데 사용할 수 있습니다. (이하 참조)
【Before】
<html><head><title>Something.</title></head>
<body>Something.</body>
</html>
【After】
Something. # <title>タグ内のもの
Something. # <body>タグ内のもの
결론
정규 표현은 확실히 봐도 모르겠지만, 읽어 풀면 반드시 아는 것이 좋네요.
자주 사용할 것 같은 정규 표현을 리스트화해 두고, 필요에 따라서 참조할 수 있도록 해 두면 작업 효율 올라갈 것 같다.
참고로 한 사이트 (항상 감사합니다)
Ruby HTTPClient tutorial
Reference
이 문제에 관하여(【Ruby】 HTML 태그를 나타내는 정규 표현과 `gsub` 메소드 내에서의 활용 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/terufumi1122/items/09c0bc478316e8585d8e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)