2011-12-01 62 views
-1

我嘗試從grep獲取XML文件中的行,但我對正則表達式還不太瞭解,並且我不知道需要使用哪些字符才能使此正則表達式字符串正常工作:如何知道我需要在正則表達式中轉義哪些字符?

grep -o -P '<row value="[a-zA-Z0-9\-\.\/:=_]*" count="[0-9]*">[a-zA-Z0-9\-\.\/:=_]*</row>' 

我試過逃避每個角色,但那不起作用。解決辦法是什麼?

+0

什麼是你想匹配的文本? – dogbane

+5

這裏有一個很好的資源來嘗試在線正則表達式:http://gskinner.com/RegExr/ 這裏是一個頁面,有很多關於正則表達式的信息:http://www.regular-expressions.info/reference.html – Marcus

+0

這是一個例子: Test Tester Chris

回答

1

您正則表達式不允許在文本中的空格。您嘗試匹配的文字有Test Tester,這與您的模式[a-zA-Z0-9\-\.\/:=_ ]*不符。您需要爲其添加空間。

試試這個:

grep -o -P '<row value="[a-zA-Z0-9\-./:=_]*" count="[0-9]*">[a-zA-Z0-9\-./:=_ ]*</row>' 
+0

其實你不需要在字符類內部轉義點。以下字符需要在字符類內轉義'^ - ] \'。如果是第一個或最後一個字符,破折號不需要被轉義,儘管 – Marcus

+0

謝謝,我會更新。 – dogbane

0

我假設你不是一個每日正則表達式用戶,所以我建議你使用像txt2re這樣的工具來幫助你建立這個。

相關問題