2012-07-12 62 views
9

我有一個正則表達式問題,我似乎無法解決。我實際上不知道正則表達式是否可以做到這一點,但我需要在模式結尾處匹配n次字符範圍。 例如。 blahblah [A-Z] {n} 問題是無論字符匹配結束範圍都需要完全相同。多次匹配相同的未知字符

例如,我想匹配

  • blahblahAAAAA
  • blahblahEEEEE
  • blahblahQQQQQ

但不

  • blahblahADFES
  • blahblahZYYYY

有沒有一些正則表達式模式可以做到這一點?在這種情況下([A-Z])blahblah([A-Z])\1+

\1是背面參照第一捕獲組,:

+0

看到這個問題:http://stackoverflow.com/questions/7147810/regular-expression-same-character-3-times – Palladium 2012-07-12 20:49:55

+0

謝謝你的答案,這個作品很棒 – 2012-07-12 20:56:13

回答

18

可以使用這種模式。並且+將匹配該字符一次或多次。爲了限制它,您可以使用{n}替換+,使用\1{3},這些匹配次數可以重複三次。

如果你需要把整個字符串匹配,那麼可以肯定分別與^前綴與$結束,使圖案變得^blahblah([A-Z])\1+$

你可以閱讀更多關於back-references here

0

blahblah(.)\1*\b應該適用於幾乎所有的語言風格。 (.)捕獲任何東西,然後\1*任何次數匹配(第一次匹配)。

2

在大多數正則表達式實現中,您可以通過引用正則表達式中的捕獲組來完成此操作。對於你的榜樣,您可以使用下面的五倍匹配相同的大寫字符:

blahblah([A-Z])\1{4} 

注意,要n次匹配正則表達式,你需要使用\1{n-1}因爲一場比賽將來自捕獲組。