如果存在空格,则需要引号的正则表达式

时间:2019-06-19 16:34:20

标签: regex ruby

我正在尝试提出一个正则表达式,该表达式将匹配包含子字符串的字符串。如果子字符串包含空格,则需要用引号引起来。

我想匹配以下内容:

model.field:if(eql?"This String")

请注意,“此字符串”可以是任何字符串。但是,只能包含字母,数字和下划线。如果没有空格,那么它实际上不需要引号。所以,

model.field:if(eql?ThisString) 

是有效的匹配项。

1 个答案:

答案 0 :(得分:0)

str = 'model.field:if(eql?"This String")'
  #=> "model.field:if(eql?\"This String\")" 
substring = '"This String"'
  #=> "\"This String\"" 

r = /#{substring}/
  #=> /"This String"/
str.match?(r)
  #=> true

请参见String#match?。如果希望在匹配的情况下返回整个字符串(否则为nil),请使用以下命令:

r = /.*#{substring}.*/
  #=> /.*"This String".*/ 
str[r]
  #=> "model.field:if(eql?\"This String\")"

请参见String#[]。此正则表达式为“匹配零个或多个字符(.*),后跟子字符串("This String"),然后零个或多个字符(.*)。

注意

str = 'model.field:if(eql?"This String")'

相同
str = "model.field:if(eql?\"This String\")"