2012-09-10 105 views
1

我在這裏讀了一些職位,但他們不能幫我找出我的問題:正則表達式不包括特定字符串

你可以閱讀下面的正則表達式正試圖用排除特定字符串匹配的地方「簡介照片「我想匹配所有其它情況下,如果表達式的開頭的字符串是不是‘我的照片’,但它不工作:

re.compile(r"(?!Profile Pictures)</strong></a><div class=\"photoTextSubtitle fsm fwn fcg\">(\d+) photos</div>") 

匹配的數字(\ d +)返回,但」個人資料圖片「仍被視爲其中之一。 我嘗試過不同的方式,但都不起作用。但是,我仍然覺得消極的前瞻是解決它的方法。有任何想法嗎? 謝謝!

+0

正則表達式,它如何工作? –

+0

IMO,你的問題不清楚。請提供樣本輸入和預期輸出。另外,如果我是正確的,你使用後綴-ve lookaround,'(?!',匹配前綴「profile pircture」。猜猜你可能想使用'(?<!' –

+0

@ notbad.jpeg問一個在評論中的一般問題不會得到任何答案 - 爲什麼不a)谷歌b)在這裏問一個具體問題,如果你不知道什麼是正則表達式 –

回答

1

你有根據python regex documentation

匹配,如果......沒有下一場比賽使用(?!...式斷言。這是一個負面的前瞻斷言。例如,Isaac(?!Asimov)只有在沒有跟隨'Asimov'時纔會匹配'Isaac'。

在這種情況下,你想要的是(?<!...這是一個負向後斷言。這是因爲您正試圖避免匹配之前的之前要匹配的文本,而不是之後匹配的文本。從正則表達式文檔:

匹配如果字符串中的當前位置沒有匹配....這被稱爲否定向後斷言。與正向lookbehind斷言類似,所包含的模式只能匹配某些固定長度的字符串。以反向lookbehind斷言開頭的模式可能會匹配搜索字符串的開頭。

這會給你一個正則表達式看起來像這個:

re.compile(r"(?<!Profile Pictures)</strong></a><div class=\"photoTextSubtitle fsm fwn fcg\">(\d+) photos</div>") 

當然,這是很難測試這種沒有從你一些例子。

+0

是的。抱歉。它應該是負面的後顧之憂。 ?

相關問題