ruby - 추출 - 정규식 특수문자



regex 패턴을 이스케이프하는 대신 다른 방법은? (4)

보통 내 정규식 패턴이 다음과 같이 보일 때 :

http://www.microsoft.com/

그럼 난 이렇게 탈출했다 :

string.match(/http:\/\/www\.microsoft\.com\//)

그런 식으로 탈출하는 대신 다른 방법이 있습니까?

나는이 패턴을 http://www.microsoft.com 처럼 사용할 수 있기를 원하며, 나는 모든 패턴에서 모든 특수 문자를 피하고 싶어한다.

https://src-bin.com


Answer #1

또한 % r을 사용하고 정규 표현식 앞에 문자를 정의하여 정규 표현식에 대해 임의의 구분 기호를 Ruby에서 사용할 수 있습니다 (예 :

%r!http://www.microsoft.com/!

Answer #2

이스케이프에 작은 따옴표를 사용하기 만하면됩니다.

string.match('http://www.microsoft.com/')

텍스트 자체에 작은 따옴표가 필요하면 %q{} 사용할 수도 있습니다. 문자열 내에서 변수를 외삽 할 필요가 있다면, %Q{} . 문자열에 정규 표현식 (예 : .*?()[]^$ )이 포함 된 경우 // 또는 % r {}을 사용하여 외삽 할 수 있습니다.


Answer #3

Regexp.quote 또는 Regexp.escape 는 자동으로 이스케이프 처리하는 데 사용할 수 있습니다.

http://ruby-doc.org/core/classes/Regexp.html#M001195

결과를 Regexp.new 에 전달하여 Regexp 객체를 만든 다음 객체의 .match 메서드를 호출하고 일치시킬 문자열 ( string.match(/regex/) 의 반대 순서)을 string.match(/regex/) 있습니다.


Answer #4
Regexp.new(Regexp.quote('http://www.microsoft.com/'))

Regexp.quote 는 특수한 regexp 의미를 갖는 모든 문자를 단순히 이스케이프합니다. 문자열을 취하고 반환합니다. 유의하십시오 . 특별하다. 인용 한 후에 생성자에 전달하기 전에 필요에 따라 regexp에 추가 할 수 있습니다. 간단한 예 :

Regexp.new(Regexp.quote('http://www.microsoft.com/') + '(.*)')

이렇게하면 나머지 경로에 대한 캡처 그룹이 추가됩니다.





regex