4 回答

TA貢獻1829條經驗 獲得超13個贊
為簡單起見,您可以將方括號內的所有內容與簡單的 regex 匹配r"\[(.*?)\]"。我們將在給定的示例中對其進行測試:
test_str = ['[glued1][glued2] wazaa','[glued10][glued20]glued decription','[glued]wazii','a description without tags','[one] [two] hello','[single] world']
一步步:
import re
regex = r"\[(.*?)\]"
for s in test_str:
print(f"{s} -> {re.findall(regex, s)}")
print(re.findall(regex, s))
結果是:
'[glued1][glued2] wazaa' -> ['glued1', 'glued2']
'[glued10][glued20]glued decription' -> ['glued10', 'glued20']
'[glued]wazii' -> ['glued']
'a description without tags' -> []
'[one] [two] hello' -> ['one', 'two']
'[single] world' -> ['single']
問題!如果您在描述中的某處使用方括號,這將不起作用。

TA貢獻1775條經驗 獲得超11個贊
假設您的字符串除了標簽'之外不包含任何括號,您可以嘗試使用匹配除括號本身(和空格)之外的所有內容的正則表達式:
[^ \[\]]*
https://regex101.com/r/pUXAVC/1
編輯:此解決方案會將描述的標記分成單個組。如果您希望它們組合在一起,您可以簡單地從正則表達式中刪除空格字符,[^\[\]]*
并修剪您在組中獲得的額外空格。

TA貢獻1895條經驗 獲得超3個贊
我想你幾乎擁有它。這會給你你想要的嗎?
^(\[\S+\]\s*)*\s*(.+)
^
表示字符串的開始。\s
表示空格。所以這就是說:在字符串的開頭,查找括號中的內容 0 次或更多次。然后查找 0 個或更多空格,然后匹配后面的內容。唯一的問題是它捕獲了可能會或可能不會出現(xiàn)在標簽之間的空白。為了解決這個問題,也許你可以有一個后處理步驟來去除空白。
添加回答
舉報