0
動態字符串我試圖找到查找字符串
f = "[[[someword_1234]]]"
內
s = "weifjwieufh weifuwiefuhw ejfwi eujfh iwueh fiwe [[[someword_1234]]]"
但字面someword_1234
三重方括號內可以改變的。所以我做不到:
s.find(f)
我該怎麼辦?
動態字符串我試圖找到查找字符串
f = "[[[someword_1234]]]"
內
s = "weifjwieufh weifuwiefuhw ejfwi eujfh iwueh fiwe [[[someword_1234]]]"
但字面someword_1234
三重方括號內可以改變的。所以我做不到:
s.find(f)
我該怎麼辦?
由於您需要匹配模式而不是靜態文本,因此您應該使用re
模塊。具體而言,您正在尋找re.search
:
>>> import re
>>> s = "weifjwieufh weifuwiefuhw ejfwi eujfh iwueh fiwe [[[someword_1234]]]"
>>> re.search(r'\[\[\[[^\]]+\]\]\]', s).group()
'[[[someword_1234]]]'
>>>
下面的模式匹配什麼樣的解釋:
\[\[\[ # [[[
[^\]]+ # One or more characters that are not ]
\]\]\] # ]]]
請注意,你需要逃避[
和]
,因爲他們有一個正則表達式的特殊含義。
哇,我知道python可以做任何事情!謝謝 – doniyor 2015-01-09 22:33:53
而不是'[^ \]] +'你可以使用一個非貪婪的限定詞:'。+?' – augurar 2015-01-09 23:30:55
@augurar - 這也可以。但是,它通常比較慢,因爲解析器需要回溯才能匹配它的模式。使用'[^ \]] +'可以讓它在一次運行中得到一切。您應該總是嘗試對非貪婪限定符使用否定字符集來提高性能。 – iCodez 2015-01-09 23:35:34