我正在从php过渡到ruby,我试图在ruby中找出php命令preg_match_all和preg_replace的同源词。
非常感谢你!
答案 0 :(得分:22)
Ruby preg_match_all
中的等价物是String#scan
,如下所示:
在PHP中:
$result = preg_match_all('/some(regex)here/i',
$str, $matches);
并在Ruby中:
result = str.scan(/some(regex)here/i)
result
现在包含一系列匹配项。
Ruby preg_replace
中的等价物是String#gsub
,如下所示:
在PHP中:
$result = preg_replace("some(regex)here/", "replace_str", $str);
并在Ruby中:
result = str.gsub(/some(regex)here/, 'replace_str')
result
现在包含带有替换文本的新字符串。
答案 1 :(得分:3)
对于preg_replace,您可以使用string.gsub(regexp, replacement_string)
"I love stackoverflow, the error".gsub(/error/, 'website')
# => I love stack overflow, the website
字符串也可以是变量,但您可能已经知道了。如果你使用gsub!原始字符串将被修改。 有关更多信息,请访问http://ruby-doc.org/core/classes/String.html#M001186
对于preg_match_all,您将使用string.match(regexp)
这将返回一个MatchData对象(http://ruby-doc.org/core/classes/MatchData.html)。
"I love Pikatch. I love Charizard.".match(/I love (.*)\./)
# => MatchData
或者你可以使用string.scan(regexp)
,它会返回一个数组(我想这就是你要找的)。
"I love Pikatch. I love Charizard.".scan(/I love (.*)\./)
# => Array
编辑:迈克的回答看起来比我的要好得多......应该批准他的。
答案 2 :(得分:0)
应该关闭preg_match
"String"[/reg[exp]/]