2009-12-02 4 views
0

루비 정규식을 사용하면 쉼표로 구분 된 목록의 모든 단어를 어떻게 일치시킬 수 있습니까? 전체 단어에 유효한 단어 문자 (예 : 문자 번호 또는 밑줄). 예를 들어, 문자열이 주어진 :유효한 단어를 루비 일반 표현식과 일치시키는 방법

! "를 참조하십시오 제인, 실행, R 번호 유엔, J의 @ 네브라스카, R n은"

내가 단어를 일치 싶습니다을

, '제인'과 '실행'을 '볼'

하지만

단어

'r # un', 'j @ ne'또는 'r1n'.

나는 혼수 상태와 일치하고 싶지 않다. 단지 단어 자체이다. http://rubular.com/regexes/12126

+0

당신이 쉼표에 문자열을 배열로 분할 한 후 실행할 수 없습니다 어떤 이유가 있습니까 :

나는 여기에 정규 표현식을 시작했습니다 당신이 이미 가지고있는 정규식을 통해 각 항목을 다시 한 결과를 얻을 경우 참조하십시오? 단어가없는 문자를 사용하면 결과가 여러 개 반환됩니다. – Jack

+0

경로의 일부로 정규식을 사용하고 있습니다. 먼저 배열로 분할하는 것이 옵션이라고 생각하지 않습니다. – rswolff

답변

6
s="see, jane, run, r#un, [email protected], r!n, fast" 
s.scan(/(?:\A|,\s*)(\w+)(?=,|\Z)/).flatten 
# => ["see", "jane", "run", "fast"] 
+0

시원함, 보지 못했습니까? : 또는? = 이전 – klochner

0

또 다른 방법

result = s.split(/[\s,]/).select{|_w| _w =~ /^\w+$/}

관련 문제