在命名捕获组中切换正则表达式选项

3
在Ruby的正则表达式中,您可以使用以下语法来命名捕获组:
/(?<name>…)/

您可以使用以下语法,在非捕获组内切换m/i/x选项的开/关:

/(?i:[a-z])/

有没有一种方法可以将这两个组合成一个单一的组?


所有这些都可以工作,但我想知道是否有更简单的选项:

/(?i:(?<name>…))/      # case-insensitive just within the region
/(?<name>(?i:…))/      # case-insensitive just within the region
/(?i)(?<name>…)(?-i)/  # case-insensitive turned on, then turned off
1个回答

3
你也可以做到这一点:
/(?<name>(?i)...)/

据我所知,就是这样了!

我曾以为这会保持不区分大小写的选项处于活动状态,但我错了。很好,也更简单。"AaAbB"[ /(?<a>(?i)a*)(?<b>b*)/ ] #=> "AaAb" - Phrogz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接