部分正则表达式不区分大小写



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

例:

/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]/}/

最新更新