1

我有这个字符串:

ibeu

我正在尝试使用一个正则表达式来执行以下操作:(其中大部分都有效)

查找单词中的音节,并在音节的第一个元音之前插入一些字母。由于这带来了挑战,上面的字符串在通过我为它编写的 lex 的 hack 运行之前已经被修改过。

我有这个正则表达式,我试图在上面的字符串上使用:

word.match(/(.*?)([^aeo]?u)(.*?)/)

鉴于正则表达式的约束(主要是u前面a, e, or o没有 ,我不希望与该正则表达式匹配,但我最终得到以下结果:

#<MatchData "ibeu" 1:"ibe" 2:"u">

我确定这很愚蠢,但我无法弄清楚。

4

1 回答 1

1

你可能想要消极的回顾:

(.*?)(?<![aeo])u

它匹配任何u前面没有的aeo。我不确定你真正想要做什么,所以我只是(.*?)像你当前的正则表达式一样包括前面。后面的(.*?)总是会匹配一个空字符串,所以是多余的,可以去掉。

您当前的解决方案失败,因为[^aeo]它是可选的。它不能简单地通过删除来修复,因为当它位于字符串的开头或连续有多个时?,您似乎也想匹配。uu

于 2013-04-09T17:01:20.567 回答