例如:
str1 = "pppp(m)pppp"
str2 = "(m)"
str1 = str1.sub(/#{str2}/, "<>#{str2}<>")
我会得到这个:
"pppp(<>(m)<>)pppp"
我想得到这个:
"pppp<>(m)<>pppp"
为什么会这样?如何避免?
最佳答案
in(
和)
在regexen中有一个特殊的含义,实际上与字符(
和)
不匹配。regex/(m)/
将与任何m
匹配,无论它是否括在括号中(如果是,则与括号不匹配)。
要匹配文字括号,请使用\(
和\)
-或者在这样的情况下插入字符串,只需对字符串使用Regexp.escape
,即/#{ Regexp.escape(str2) }/
。
关于ruby - Ruby,奇怪的替代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6259173/