通常當我正則表達式模式是這樣的:另一種方式,而不是逃避正則表達式模式?
http://www.microsoft.com/
然後,我必須逃脫這樣的:
string.match(/http:\/\/www\.microsoft\.com\//)
有另一種方式,而不是逃避它這樣呢?
我希望能夠像這樣使用它http://www.microsoft.com,因爲我不想逃避我所有模式中的所有特殊字符。
通常當我正則表達式模式是這樣的:另一種方式,而不是逃避正則表達式模式?
http://www.microsoft.com/
然後,我必須逃脫這樣的:
string.match(/http:\/\/www\.microsoft\.com\//)
有另一種方式,而不是逃避它這樣呢?
我希望能夠像這樣使用它http://www.microsoft.com,因爲我不想逃避我所有模式中的所有特殊字符。
Regexp.new(Regexp.quote('http://www.microsoft.com/'))
Regexp.quote
只是轉義任何具有特殊正則表達式含義的字符;它需要並返回一個字符串。請注意0也是特別的。引用後,可以在傳遞給構造函數之前根據需要追加到正則表達式。一個簡單的例子:
Regexp.new(Regexp.quote('http://www.microsoft.com/') + '(.*)')
這爲路徑的其餘部分添加了一個捕獲組。
Regexp.quote
或Regexp.escape
可以用來自動地逃脫你的東西:
http://ruby-doc.org/core/classes/Regexp.html#M001195
結果可以傳遞給Regexp.new
創建一個RegExp對象,然後就可以調用該對象的.match
方法和通它是匹配的字符串(與string.match(/regex/)
相反的順序)。
您可以簡單地使用單引號逃逸。
string.match('http://www.microsoft.com/')
如果您在文本本身需要單引號,您還可以使用%q{}
。如果您需要在字符串內外推變量,請使用%Q{}
。這相當於雙引號"
。 如果字符串包含正則表達式(如:.*?()[]^$
)你想推斷,使用//或%R {}
爲了方便我只定義
def regexcape(s)
Regexp.new(Regexp.escape(s))
end
當然,這也工作:'string.match (/#{Regexp.quote('http://www.microsoft.com/')} /)' – 2013-08-21 09:29:21
用四位數年份捕獲組替換所有「CURRENT_YEAR」標記:Regexp.new(input_string.split 「CURRENT_YEAR」)。map {| p | Regexp.quote(p)} .join(「(\\ d {4})」))' – 2017-05-05 16:18:31
鑑於此,不應該返回成功嗎? 如果Regexp.new(Regexp.quote('。'))。匹配('A')會提示「成功」 – Joe 2017-12-10 10:31:37