【问题标题】:Case insensitive for part of the regex?部分正则表达式不区分大小写?
【发布时间】:2013-12-23 18:28:05
【问题描述】:

我有一个正则表达式,其中部分正则表达式不区分大小写。

例子:

/Guest post by ([A-Z][a-z]+\s[A-Z][a-z]+)/

“Guest post by”应该不区分大小写,但后半部分显然需要区分大小写,因为它正在寻找名字 + 姓氏,每个字母的第一个字母大写。

如果我这样做了

/Guest post by ([A-Z][a-z]+\s[A-Z][a-z]+)/i

它不会起作用,因为现在它会匹配诸如“小狗的访客帖子”之类的东西,这是我不想要的。

但是,它需要与“GUEST POST BY Brian Williams”相匹配。

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    使用不区分大小写的修饰符模式:

    (?i:)
    

    在你的情况下:

    (?i:Guest post by )([A-Z][a-z]+\s[A-Z][a-z]+)
    

    工作示例:http://regex101.com/r/pW1gV9

    或者(感谢@robertodecumex!)您可以使用修饰符范围,如果您想从捕获中排除结果,这很方便。

    (?i)Guest post by(?-i) ([A-Z][a-z]+\s[A-Z][a-z]+)
    

    【讨论】:

    • 或者你可以这样做:P 好多了 +1
    • 也有一个范围的例子。 regex101.com/r/vH3dF5 添加可能有用。
    • @robertodecurnex 当然——如果你需要的话,虽然我可以看到如果你正在使用捕获组(并且不想捕获该部分),这主要是很方便的。
    • 当然,只是想想将来可能会来这里的人在谷歌上搜索它。
    【解决方案2】:

    你需要这样的正则表达式组合

    /#{/guest post by/i} #{/[A-Z][a-z]+\s[A-Z][a-z]/}/
    

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2013-11-12
      相关资源
      最近更新 更多