我试图在字符串中找到元音的第一个匹配项,然后在 ruby 中对字符串进行分区,但我没有得到正确的结果。
我试过的是
"rodio".partition(/[(?=aeiouAEIOU)].*/).reject(&:empty?)
但我回来了["r", "odio"]
.对于我抛出的任何单词,我将取回没有元音的部分和部分,但我需要没有元音的部分来包含它。所以应该是
["ro", "dio"]
.
celery
应该是 ["ce", "lery"]
不是["c", "elery"]
等
我错过了什么?我正在尝试一切,但我不知道如何编写它。
最佳答案
您可以使用正面回顾和 split
与 2
限制参数:
.split(/(?<=[aeiou])/i, 2)
(?<=[aeiou])
pattern 是一个积极的后视,它匹配一个紧接在a
前面的位置。 , e
, i
, o
或 u
(使用 /i
修饰符启用不区分大小写的匹配)。 2
limit 参数使引擎仅将字符串拆分为 2 个部分,因此它只会在第一次匹配时拆分一次。
您肯定会使用与 .partition
相同的模式:
.partition(/(?<=[aeiou])/i).reject(&:empty?)
关于ruby - 正则表达式仅匹配第一个元音并将其包含在匹配中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51230924/