0
패턴 목록이 있는데 해당 패턴과 문자열을 일치 시키려고하지만 전체 단어 만 일치시켜야하므로 단어 경계를 Regexp.union에 동적으로 삽입하는 방법을 찾고있었습니다. 방법 그러나 나는 무언가를 놓치고있다. 여기 내가단어 경계가있는 Regexp 공용어
test_string = "lonewolf is lonely"
pattern_list = ["lonely", "wolf", "jungle"]
pattern_list.collect! { |pattern| pattern = "\b" + pattern + "\b"}
patterncollection = Regexp.union(pattern_list)
puts patterncollection
puts test_string.scan(patterncollection)
결과가 비어 시도 무엇이고 나는 패턴 수집을 인쇄 할 경우 나는 "\ B는"제대로 탈출되지 않는 것을 알 수있다. 배열을 동적으로 검색 할 때 "\ b"를 배열에 직접 삽입 할 수 없습니다. 하나 이상의 옵션을 시도했지만 여전히 운이 없습니다. 문제에 대한 다른 접근 방식을 환영합니다.
Perfect! 고맙습니다! – Jack
'Regexp.union'을 사용할 때와 같이 정규 표현식을 정규 표현식에 포함시키는 것에주의하십시오. [/ fo # {Reinxp.union ([ 'O', 'B'])}/혼합] # => nil'하지만''foo '[/ FO # {Re ','B ']). source}/mix] # => "foo"'. 무슨 일이 일어날 지 당신이 절대적으로 긍정적이지 않다면'source'를 사용하십시오. –
@ theTinMan 감사합니다. 답변을 업데이트했습니다. 이 특정 입력에 대해서는 아무런 문제가 없지만 모서리의 경우를 언급 할만큼 가치가 있다는 것에 전적으로 동의합니다. – mudasobwa