2016-12-25 4 views
2

다음과 같이 HTML 문서 본문의 텍스트가 나옵니다. 정규식 "Exhibit 99"에 대한 스캔을 시도하면 일치하지 않는 항목, 즉 빈 배열이 표시됩니다. 그러나 html에서는 inspect 요소에 & nbsp99가 표시되어 있지만 "Exhibit 99"가 표시됩니다. 이러한 HTML 문자를 제거하고 "Exhibit 99"를 일반 문자열 인 것처럼 검색하려면 어떻게해야합니까?Nokogiri/Regex의 특수 문자 다루기

url = "https://www.sec.gov/Archives/edgar/data/1467373/000146737316000912/fy16q3plc8-kbody.htm" 
doc = Nokogiri::HTML(open(url)) 
body = doc.css("body").text 
body.scan(/exhibit 99/i) 

답변

2

유니 코드 문자 공간

당신은 사용할 수 있습니다

body.scan(/exhibit\p{Zs}99/i) 

documentation에 대한 Unicode character’s General Category에서 :

/\p{Z}/ - 'Separator' 
/\p{Zs}/ - 'Separator: Space' 

그것은 공백 또는 non-breaking space,하지만 탭 또는 일치 줄 바꿈. 문자열은 UTF-8로 인코딩되어야합니다. 자세한 내용은 related question을 참조하십시오.

비 단어 문자

더 허용 정규식은 다음과 같습니다

body.scan(/exhibit\W99/i) 

이는 문자, 숫자 또는 exhibit99 사이에 밑줄 이외의 문자를 할 수 있습니다. 공백, nbsp, 탭, 대시와 일치합니다 ...

+0

그건 작동합니다. 그 코드가 무엇을하는지 설명해 주시겠습니까? – PiperWarrior