IT

공용을 정규 루비로 변환

lottoking 2020. 7. 30. 09:37
반응형

공용을 정규 루비로 변환


"/ [\ w \ s] + /"와 같은 노드를 정규식으로 변환해야합니다.

"/[\w\s]+/" => /[\w\s]+/

나는 다음 Regexp과 같은 다른 방법을 제가 보았습니다 .

Regexp.new("/[\w\s]+/") => /\/[w ]+\//, 마차 Regexp.compileRegexp.escape. 그러나 내가 예상대로 돌아 오는 것은 없습니다.

더 많은 백 슬래시를 염색했습니다.

Regexp.new("[\w\s]+") => /[w ]+/ 그러나 운이 없다.

그런 다음 간단하게 시도했습니다.

str = "[\w\s]+"
=> "[w ]+"

탈출한다. 이제 어떻게 어디서나 그대로 유지하고 정규 객체로 변환 할 수 있습니까?


여기에 첫 번째 인용이 작은 따옴표로 표시되어야합니다 ( 이 페이지 참조 )

>> str = '[\w\s]+'
 => "[\\w\\s]+" 
>> Regexp.new str
 => /[\w\s]+/ 

확실하게

  /#{Regexp.quote(your_string_variable)}/

너무 일하고있다

편집 을 위해 Regexp.quote에 your_string_variable을 래핑하십시오.


이 방법은 특별한 의미로 모든 문자를 직원에게 이스케이프합니다.

/#{Regexp.quote(your_string)}/

예를 들어, .'any character'로 해석되기 때문에 이스케이프됩니다.

백 슬래시가 특별한 의미를 사용하기 위해 정규 뜨개질을 시작하지 않습니다.


% 표기법 사용 :

%r{\w+}m => /\w+/m

또는

regex_string = '\W+'
%r[#{regex_string}]

에서 도움 :

% r [] 보간 된 Regexp (표지가 나타날 수 있음)


gem to_regexp 가 작업을 수행 할 수 있습니다.

"/[\w\s]+/".to_regexp => /[\w\s]+/

수정 사용할 수 있습니다.

'/foo/i'.to_regexp => /foo/i

마지막으로 : detect를 사용하면 더 게으를 수 있습니다.

'foo'.to_regexp(detect: true)     #=> /foo/
'foo\b'.to_regexp(detect: true)   #=> %r{foo\\b}
'/foo\b/'.to_regexp(detect: true) #=> %r{foo\b}
'foo\b/'.to_regexp(detect: true)  #=> %r{foo\\b/}

참고 URL : https://stackoverflow.com/questions/8652715/convert-a-string-to-regular-expression-ruby

반응형