我有一个正则表达式,其中部分正则表达式应该不区分大小写。
例:
/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
它不起作用,因为现在它会匹配诸如"小狗的客座帖子"之类的东西,我不想要。
但是,它需要与"布莱恩威廉姆斯的客座帖子"相匹配。
使用不区分大小写的修饰符模式:
(?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]+)
你需要这样的正则表达式组合
/#{/guest post by/i} #{/[A-Z][a-z]+s[A-Z][a-z]/}/