[英]Way to partially match a Ruby string using Regexp
我正在處理2種情況:
假設我有那些變量:
a = "hello"
b = "hello-SP"
c = "not_hello"
任何部分匹配
我想接受包含變量a
在內的任何字符串,因此b
和c
將匹配。
圖案匹配
我想匹配了字符串a
內部的,其次是'-'
,那么b
將會匹配, c
沒有。
我遇到了問題,因為我總是使用語法/expression/
來定義Regexp,那么如何在Ruby上動態定義RegExp?
您可以使用相同的語法在正則表達式中使用變量,因此:
reg1 = /#{a}/
將匹配任何包含的值a
變量(在創建表達式的時候了!)和
reg2 = /#{a}-/
會做同樣的事情,加上連字符,所以在您的示例中, hello-
。
編輯:正如Wayne Conrad所指出的那樣,如果a
包含“任何在正則表達式中具有特殊含義的字符”,則需要轉義它們。 例:
a = ".com"
b = Regexp.new(Regexp.escape(a))
"blah.com" =~ b
評論遲到了,但我找不到我想要的東西,上面提到的答案對我沒有幫助,希望它能幫助剛接觸紅寶石的人快速解決問題。
Ruby代碼:
st = "BJ's Restaurant & Brewery"
#take the string you want to match into a variable
m = (/BJ\'s/i).match(string) #(/"your regular expression"/.match(string))
# m has the match #<MatchData "BJ's">
m.to_s
# this will display the match
=> "BJ's"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.