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

时间:2013-12-23 18:28:06

标签: ruby regex

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

示例:

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

“来宾帖子”应该不区分大小写,但下半部分显然需要区分大小写,因为它正在寻找名字+姓氏,每个字母大写首字母。

所以如果我这样做

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

它不会起作用,因为现在它会匹配“小狗的客人邮寄”这样的东西,这是我不想要的。

然而,它需要与“布莱恩威廉姆斯的宾客游戏”相匹配。

2 个答案:

答案 0 :(得分:12)

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

(?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]+)

答案 1 :(得分:1)

你需要像这样的Regexp组合

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