ruby - 正则表达式仅匹配第一个元音并将其包含在匹配中

标签 ruby regex

我试图在字符串中找到元音的第一个匹配项,然后在 ruby​​ 中对字符串进行分区,但我没有得到正确的结果。

我试过的是

"rodio".partition(/[(?=aeiouAEIOU)].*/).reject(&:empty?)

但我回来了["r", "odio"] .对于我抛出的任何单词,我将取回没有元音的部分和部分,但我需要没有元音的部分来包含它。所以应该是

["ro", "dio"] .

celery应该是 ["ce", "lery"]不是["c", "elery"]

我错过了什么?我正在尝试一切,但我不知道如何编写它。

最佳答案

您可以使用正面回顾和 split2限制参数:

.split(/(?<=[aeiou])/i, 2)

参见 online Ruby demo

(?<=[aeiou]) pattern 是一个积极的后视,它匹配一个紧接在a 前面的位置。 , e , i , ou (使用 /i 修饰符启用不区分大小写的匹配)。 2 limit 参数使引擎仅将字符串拆分为 2 个部分,因此它只会在第一次匹配时拆分一次。

您肯定会使用与 .partition 相同的模式:

.partition(/(?<=[aeiou])/i).reject(&:empty?)

关于ruby - 正则表达式仅匹配第一个元音并将其包含在匹配中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51230924/

相关文章:

ruby - 在 Ruby 中使用命名正则表达式组

ruby-on-rails - 将 header 添加到 rspec get

ruby - Visual Studio 代码 : Disabling Error/Warning checks in for specific file type

ruby-on-rails - Rails 内联附件在 gmail 中未正确显示

ruby-on-rails - 如何将 user_id 的隐藏字段传递给评论?

javascript - 为什么我在以下 for...of 循环中收到意外 token [?

javascript - 在js中使用正则表达式从字符串中提取正确的用户名

Javascript URL 中包含非法字符

arrays - 正则表达式:保留文本后的最后一个单词

javascript - 如何将 CSS 类的索引与 JavaScript 匹配?