2011-12-01 37 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这样的工具来帮助你建立这个。

相关问题