我试图在字符串中找到元音的第一次匹配,然后在ruby中分割一个字符串,但是我没有得到正确的结果。
我试过的是
"rodio".partition(/[(?=aeiouAEIOU)].*/).reject(&:empty?)但我回来了["r", "odio"]。不管我说什么,我都要把那个没有元音和半音的部分拿回来,但是我需要那个没有元音的部分来包含它。所以应该是
["ro", "dio"]。
celery应该是["ce", "lery"],而不是["c", "elery"]等等。
我遗漏了什么?我什么都试过了,但我不知道怎么写。
发布于 2018-07-08 10:13:13
您可以使用带有split限制参数的正向查找和2:
.split(/(?<=[aeiou])/i, 2)(?<=[aeiou])模式是一个正的查找,它匹配紧跟在a、e、i、o或u前面的位置(用/i修饰符启用不区分大小写的匹配)。2限制参数使引擎只将字符串分成2部分,因此在第一次匹配时只会分裂一次。
您肯定可以在.partition中使用相同的模式。
.partition(/(?<=[aeiou])/i).reject(&:empty?)发布于 2018-07-08 10:54:31
你不需要使用任何查找来做这件事,一个非贪婪的量词就足够了:
"rodio".partition(/.*?[aeiou]/i).reject(&:empty?)或者更好的方法是使用一个否定的字符类:
"rodio".partition(/[^aeiou]*./i).reject(&:empty?)发布于 2018-07-08 10:18:28
只需使用正面的背景:"rodio".partition(/(?<=[aeiou])/i).reject(&:empty?)
https://stackoverflow.com/questions/51230924
复制相似问题