簡體   English   中英

使用Regexp部分匹配Ruby字符串的方法

[英]Way to partially match a Ruby string using Regexp

我正在處理2種情況:

假設我有那些變量:

a = "hello"
b = "hello-SP"
c = "not_hello"
  1. 任何部分匹配
    我想接受包含變量a在內的任何字符串,因此bc將匹配。

  2. 圖案匹配
    我想匹配了字符串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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM