我有幾個字符串,看起來像下面這樣:我會用什麼樣的正則表達式來匹配它?
<some_text> TAG[<some_text>@11.22.33.44] <some_text>
我想從該行的IP_ADDRESS,只有IP_ADDRESS。 (爲了這個例子,假設IP地址將始終是這種格式xx.xx.xx.xx)
編輯:恐怕我不清楚。
的字符串會是這個樣子:
<some_text> TAG1[<some_text>@xx.xx.xx.xx] <some_text> TAG2[<some_text>@yy.yy.yy.yy] <some_text>
注意「SOME_TEXT」可以是可變長度。我需要將不同的正則表達式關聯到不同的標記,以便當調用r.group()時,將返回IP地址。在上述情況下,正則表達式不會有所不同,但它是一個不好的例子。
到目前爲止我嘗試過的正則表達式已經不夠充分。
理想情況下,我想是這樣的:
r = re.search('(?<=TAG.*@)(\d\d.\d\d.\d\d.\d\d)', line)
,其中線是上面指定的格式。但是,這不起作用,因爲您需要具有固定寬度的後視斷言。
此外,我也試過非捕獲組這樣:
r = re.search('(?<=TAG\[)(?:.*@)(\d\d.\d\d.\d\d.\d\d)', line)
但是,我不能用這個,因爲r.group()將返回[email protected]
我知道r.group(1)將只返回ip地址。不幸的是,我寫的腳本要求我的所有正則表達式在調用r.group()後都會返回正確的結果。
這種情況我可以使用什麼樣的正則表達式?
代碼是在Python中。
注:所有SOME_TEXT可以是可變長度
我認爲這個問題不是正則表達式,但是你必須使用'r.group()'。可能更容易擺脫這個要求;如果它導致這樣的問題,則很可能表明設計錯誤。 – Philipp 2010-06-30 18:23:35