2012-05-26 47 views
0

我想寫一個正則表達式,它會給我所有正好在3個數字之間的字符。例如:
111a333b444將返回ab。但是,1111a333b444將僅返回b,因爲a的左側有3位以上的數字。 ,因爲這裏有一個重疊的問題,我使用了一個前面的正則表達式,例如:
matches = re.finditer(r'(?=([\d]{3}(.){1}[\d]{3}))',str)但在上面的第二個例子中它也匹配111a333匹配與重疊 - 只有3個字符,但不是4 - 正則表達式

任何人都有一個匹配的正則表達式的想法?

非常感謝

+0

的'{1}'和'左右\ D'的方括號是多餘的。 – tripleee

+0

正確..謝謝! –

回答

0

試試這個

(?<=(?<!\d)\d{3})[^\d]+(?=\d{3}(?!\d)) 

看到它here on Regexr

+1

你能解釋一下括號嗎?<=?我的意思是爲什麼沒有(?<!\ d)(?= \ d {3}(。){1} \ d {3})(?!\ d)不起作用? –

+0

沒關係我知道了..謝謝你的幫助:) –