【问题标题】:Toggle regex options inside a named capture在命名捕获中切换正则表达式选项
【发布时间】:2013-06-02 03:01:03
【问题描述】:

在 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

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    你也可以这样做:

    /(?<name>(?i)...)/
    

    AFIK,仅此而已!

    【讨论】:

    • 我原以为这会使不区分大小写的选项保持活动状态,但我错了。不错,也更简单。 "AaAbB"[ /(?&lt;a&gt;(?i)a*)(?&lt;b&gt;b*)/ ] #=&gt; "AaAb"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2011-03-03
    • 2011-10-21
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多