Ruby 中的 preg_match_all 和 preg_replace

发布于 2024-11-03 04:11:26 字数 97 浏览 2 评论 0原文

我正在从 php 过渡到 ruby​​,我试图找出 ruby​​ 中 php 命令 preg_match_all 和 preg_replace 的同源。

太感谢了!

I am transitioning from php to ruby and I am trying to figure the cognate of the php commands preg_match_all and preg_replace in ruby.

Thank you so much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幸福还没到 2024-11-10 04:11:26

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 现在包含带有替换文本的新字符串。

The equivalent in Ruby for preg_match_all is String#scan, like so:

In PHP:

$result = preg_match_all('/some(regex)here/i', 
          $str, $matches);

and in Ruby:

result = str.scan(/some(regex)here/i)

result now contains an array of matches.

And the equivalent in Ruby for preg_replace is String#gsub, like so:

In PHP:

$result = preg_replace("some(regex)here/", "replace_str", $str);

and in Ruby:

result = str.gsub(/some(regex)here/, 'replace_str')

result now contains the new string with the replacement text.

GRAY°灰色天空 2024-11-10 04:11:26

对于 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

匹配: http://ruby-doc.org/core/classes/String.html #M001136

扫描:http://ruby-doc.org/core/classes/String.html#M001181

编辑:迈克的答案看起来比我的简洁得多......应该批准他的。

For preg_replace you would use string.gsub(regexp, replacement_string)

"I love stackoverflow, the error".gsub(/error/, 'website') 
# => I love stack overflow, the website

The string can also be a variable, but you probably know that already. If you use gsub! the original string will be modified.
More information at http://ruby-doc.org/core/classes/String.html#M001186

For preg_match_all you would use string.match(regexp)
This returns a MatchData object ( http://ruby-doc.org/core/classes/MatchData.html ).

"I love Pikatch. I love Charizard.".match(/I love (.*)\./)
# => MatchData

Or you could use string.scan(regexp), which returns an array (which is what you're looking for, I think).

"I love Pikatch. I love Charizard.".scan(/I love (.*)\./)
# => Array

Match: http://ruby-doc.org/core/classes/String.html#M001136

Scan: http://ruby-doc.org/core/classes/String.html#M001181

EDIT: Mike's answer looks much neater than mine... Should probably approve his.

ゃ懵逼小萝莉 2024-11-10 04:11:26

preg_match 应该接近

"String"[/reg[exp]/]

Should be close for preg_match

"String"[/reg[exp]/]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文