我正在尝试提出一个正则表达式,该表达式将匹配包含子字符串的字符串。如果子字符串包含空格,则需要用引号引起来。
我想匹配以下内容:
model.field:if(eql?"This String")
请注意,“此字符串”可以是任何字符串。但是,只能包含字母,数字和下划线。如果没有空格,那么它实际上不需要引号。所以,
model.field:if(eql?ThisString)
是有效的匹配项。
答案 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\")"