2011-08-03 98 views
1

內我可能有以下幾點:匹配字符,數字和特殊字符的字符串中的模式

this is a string ::foo:bar:: ::baz:123abc:: ::bäz:üéü:: ::#$%%:4/4:: 

我怎樣才能與::開始各地,並與::結束,匹配的是介於兩者之間。 在這些冒號內有我需要從字符串中篩選出的關鍵值對。

如果不會有特殊字符我的正則表達式應該是這樣的:

r'::([a-z0-9]+):([a-z0-9]+)::' 

我可以手動列出這些特殊字符,但我不認爲這就是這樣做的正確方法。

THX

+1

我不知道你所使用的語言,而是'R'是什麼:: [^:] +:[^:] + ::''? – Beta

+0

你的角色類看起來有點奇怪。你確定空格和逗號是否被允許?如果您只想匹配小寫拉丁字母和數字,請嘗試'[a-z0-9] +'。 – Shi

+0

@beta:thx多數民衆贊成它。 – aschmid00

回答

3

有了不冒號:

r'::([^:]+):([^:]+)::' 
2

首先,你應該提到的正則表達式的味道/工具,你想使用,但一般:

r'::([^:]+):: 

應該捕獲的特殊字符爲好。

HTH

+0

我不認爲提及哪種語言我使用它會在正則表達式語法中有所作爲,但是我正在使用python進行開發。 – aschmid00

+0

其實呢。例如。在'sed'中你必須轉義'('pair(和其他幾個字符) –

+1

掩蓋'('不是必須的,如果你用'sed -r ...'調用sed' –