2011-09-30 7 views
6

인수 파서 만들기. 문자열을 배열로 분할하고자하는 경우, 구분자는 ", "이고 앞에는 "|"을 붙입니다. 즉 문자열이Ruby에서 Regex negative lookbehind가 작동하지 않습니다.

"foo, ba|, r, arg" 

나는이 정규식 사용하기 위해 노력하고있어

`["foo", "ba|, r", "arg"]` 

발생한다는 뜻 : (?<!\|),http://regexhero.net/tester/에서 작동하지만 루비에

args.split(/(?<!\|), /) 

을하려고 할 때, 나는 얻을 오류 : undefined (?...) sequence: /(?<!\|), /

+1

1.9에서 작동하므로 Ruby 설치를 업그레이드 할 수 있다면 계속 진행하십시오. –

+0

@Michael Kohl 정확히 내가 한 것입니다. – tybro0103

+0

또한 Ruby regex 테스트에서 [Rubular] (http://rubular.com/)를 사용합니다. – Pakman

답변

10

Ruby의 정규식 엔진은 지원하지 않습니다. 포트 lookbehind (아직).

1.9로 전환하거나 Oniguruma을 사용해야합니다. 그 옵션이 아니라면


, 당신은 |,를 검색하고 마커의 어떤 종류로 교체 할 수 있습니다. 모든 것이 끝나면 |,을 다시 넣으십시오.

또한 같은 정규식 시도 할 수 있습니다 : 분명히

/(?:[^|]),/

그러나 (?:[^|])은 이후 몇 가지 추가 작업을 수행해야합니다 의미 제로 폭 아니다.

+0

Ruby가 적어도 1.9.3에서 부정적인 lookbehind를 지원한다는 점에 유의하십시오. http://ruby-doc.org/core-1.9.3/Regexp.html – filsa