在perl中捕获组中的选项和“或”

时间:2016-02-06 23:04:26

标签: regex perl

我想在正则表达式中获取一个具有多个“或”和一个可选组的捕获组。这是我的正则表达式:(a|e|i|o|u)?(a|e|i|o|u)(g|k) 我想让它在g或k之前找到一个或两个元音,比如“taek”和“tag”。

我尝试将括号括在(a|e|i|o|u)?(a|e|i|o|u)附近,但$1仍然未初始化。

1 个答案:

答案 0 :(得分:2)

如果可选的第一次捕获与任何东西都不匹配,将取消设置

$ 1;这并不意味着$ 2未被设置。如果你希望$ 1为空,你需要将括号括起来,即([aeiou]?)。如果你真的需要使用交替和可选指标那么你需要两个级别的括号,对于这种情况你可能想要用“?:”来取消内部的一个,即((?:a) | E |我| O |?U))