2012-05-06 41 views
0

我有一長文本,我需要在兩個其他單詞之間隔離單個單詞。排除正則表達式中的字符串

這是文本的一部分,我有:

2012-05-05 19:31:44 status config-files gwibber-service 3.4.0-0ubuntu4 
2012-05-05 19:31:44 status not-installed gwibber-service <none> 
2012-05-05 19:31:45 status installed gir1.2-notify-0.7 0.7.5-1 
2012-05-05 19:31:45 remove gir1.2-notify-0.7 0.7.5-1 <none> 
2012-05-05 19:31:45 status half-configured gir1.2-notify-0.7 0.7.5-1 
2012-05-05 19:31:45 status half-installed gir1.2-notify-0.7 0.7.5-1 

現在我要選擇excpet的所有詞語和數字,例如:

gir1.2-notify-0.7 

所以我代替他們「 「(實際上刪除所有其他文字和數字).. 我認爲,有兩個關鍵字,我可以用它們隔離:」刪除「和」{一些數字和。「<無>」 它們之間的一切必須是排除...

我希望你明白了。感謝幫助。

回答

0
r"\w[\w-]*[\.]{1}\w[\w-\.]*" /// -> it will match all strings of the form -> 

[一個字母數字字符] [(零或更多的字母數字-chararcters-或 - 「 - 」)。[一個字母數字字符] [(零或更多的字母數字-chaptercters-or - 「 - 」)]

所以它會匹配girl1.2-notify-0.7,但它不會匹配gwibber服務。

0

我不知道,我真的明白你的問題,但使用正則表達式如下...

remove(.*)<none>$ $1會給你「gir1.2 - 通知 - 0.7」

我不假設你可以在單個語句中選擇/替換除$ 1以外的所有內容,則可能需要根據正則表達式返回的結果滾動一些代碼進行處理。

1

試試這個:

(?<=remove)\s+([\w\.\-]+)\b 

這不過是一個簡單的方法positive look-behind。爲了更好的瞭解訪問here

相關問題