공용을 정규 루비로 변환
"/ [\ w \ s] + /"와 같은 노드를 정규식으로 변환해야합니다.
"/[\w\s]+/" => /[\w\s]+/
나는 다음 Regexp
과 같은 다른 방법을 제가 보았습니다 .
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
, 마차 Regexp.compile
및 Regexp.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
'IT' 카테고리의 다른 글
Eclipse에서 CSS 사전 처리를 통합하는 방법은 무엇입니까? (0) | 2020.07.30 |
---|---|
주요에서 목록이 항목을 공유하는지 테스트 (0) | 2020.07.30 |
JavaScript 확장 변수를 10 진수 / 돈으로 변환 (0) | 2020.07.30 |
Android에서 사용자 정의 서체 사용 (0) | 2020.07.30 |
문서 디렉토리에서 지정된 파일 삭제 (0) | 2020.07.30 |