2016-04-25 13 views
0

我是一個正則表達式新手。 Python中有一些字符串,如下所示:^b^[word](#30b) from markdown text。我想剝去腳註來得到這個詞。如何使用Python從markdown中刪除腳註

我有以下工作:

import re 
pattern = r"\[([\w]+)\]" 
s = "^b^[word](#32b)" 
m = re.search(pattern, s) 
print(m.group(1)) 

片斷代碼提取單詞word。但是現在如果我在括號內有多個單詞,如:^c^[every word](#12c),我想提取所有單詞?謝謝!

回答

0

您可以使用此:\^[^^]+\^\[([^\]]+)\]\([^)]+\)

的代碼將是這樣的:

import re 
p = re.compile(ur'\^[^^]+\^\[([^\]]+)\]\([^)]+\)') 
test_str = u"^b^[word another words](#30b)" 


for (words) in re.findall(p, test_str): 
    print words.split() 

的正則表達式是不是很複雜,它只是涉及到很多逃逸。

  • [^^]+一些字符不是^

  • ([^\]]+)捕獲括號內

  • [^)]+匹配的字符不屬於)


匹配

我只提供了一個簡單的單詞拆分。

@TJB你給的太少數據,我知道,並不是所有的腳筆記開始`^ B ^`你可以找到更多複雜的解決方案here.

+0

。我已經解決了這個問題,並添加了一些關於如何獲取一組單詞的說明。請不要改變這個問題,而是在將來再問一個新問題。 – Laurel

+0

對不起! ;-)我非常感謝你的幫助。當我運行你的代碼時,我得到的錯誤是他們的正則表達式是無效的語法。我錯過了什麼?這是一個Python3與Python2的東西嗎? – TJB

+0

@TJB我不太瞭解Python,但是它在我測試時正在運行。什麼是錯誤? – Laurel

相關問題