2013-12-23 130 views
4

我有一個正則表達式的一部分的正則表達式應該不區分大小寫。對正則表達式的一部分不區分大小寫?

例子:

/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 

它不會工作,因爲現在它會匹配的東西,如「小狗狗客戶後」,這是我不想要的。

但是,它需要匹配「布萊恩威廉斯來賓」。

回答

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]+) 
+0

或者你可以這樣做:P更好+1 – robertodecurnex

+0

也有一個範圍的例子。 http://regex101.com/r/vH3dF5添加這可能是有用的。 – robertodecurnex

+0

@robertodecurnex肯定 - 如果你需要的話,雖然我可以看到,如果你使用捕獲組(而不想捕獲該部分),大多數情況下會很方便。 – brandonscript

1

都需要這樣的

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