我試圖從reddit的名稱列表拉多個名字,即捕獲多種可能性與正則表達式
"Title: /u/foo, /u/bar"
"Title - /u/foo and /u/bar"
"title-/u/foo, /u/bar and /u/foobar"
"Title /u/barfoo (/u/foo and /u/bar)"
和我有麻煩匹配1,也許100名之間的任意數字。
編輯:我不認爲我說清楚了,我給出的示例字符串是我正在搜索的實際文本的小片段。我檢查崗位的屍體/ R/KarmaCourt,像這樣的:
http://www.reddit.com/r/KarmaCourt/comments/1ifz0u/ http://www.reddit.com/r/KarmaCourt/comments/28hv73/
的問題是圍繞構建一個正則表達式循環。我不想知道如何搜索我給名稱的樣本字符串。
我知道r'title.*/u/(\w{3:20})'
將在該行最後一個名稱相匹配,r'title.*?/u/(\w{3:20})'
將匹配第一個在該行,那我可以手動在表達的末尾添加的r'.*?/?u?/?(\w{3:20})?'
一些數字來匹配多個名稱,但我不能不認爲這是一種不好的做法。
從r'title.*?(?=/u/\w{3:20})(.*)'
取出匹配的字符串並從中拉出所有匹配的r'/u/(\w{3:20})'
組會更好嗎?還是有辦法在一個步驟中完成我基本上缺失的所有操作?
注意:這個項目正在python中完成,但這更多的是一個基本問題。
如果我在我非貪婪的例子'r'title。*?/ u /(\ w {3:20})'上使用了這個,那麼下一個匹配就不會在下一個匹配之前尋找另一個「標題」名稱?這仍然會是兩步,類似於我上面提出的解決方案,對吧? – Humus
@Humus - 它的一個步驟。增加了一些輸出。只需找到所有這些,它將一次性獲得所有這些值。 – sln
謝謝!我想我現在明白這一點。不幸的是,Python沒有\ G結構,但顯然有一種方法可以解決這個問題: http://stackoverflow.com/questions/529830/do-python-regexes-support-something-like-perls -g – Humus