2017-05-16 74 views
0

我正在使用低於正則表達式提取標籤單獨。這在記事本++和regexr.com中工作正常,但在使用grep時無法正常工作。正則表達式工作在記事本++,但不是在grep

正則表達式

<message>[\s\S]*?<\/message> 

示例文字

<message> 
<tag1>1</tag1> 
<tag2>Car</tag2> 
</message>#@# 
<message> 
<tag1>2</tag1> 
<tag2>Bus</tag2> 
</message>#@# 
<message> 
<tag1>3</tag1> 
<tag2>Car</tag2> 
</message>#@# 
<message> 
<tag1>4</tag1> 
<tag2>Truck</tag2> 
</message> 

grep的

grep -r "<message>[\s\S]*?<\/message>" LNBK-XML_1_0_05112017_040000.txt 
+0

使用'grep -P'打開'Perl'風格。 – Jan

+0

你試過grep -E還是grep -P? –

+0

@shadow:不,它不是。模式'[\ s \ S] *?'會找到*包含新行的所有內容。 – Jan

回答

0

使用

grep -P "<message>[\s\S]*?<\/message>" LNBK-XML_1_0_05112017_040000.txt 

這使用非默認激活的非貪婪語法Perl

+0

在鏈接的問題中:*默認情況下'grep'不支持非貪婪修飾符,但是您可以使用'grep -P'來使用Perl語法* –

+0

@WiktorStribiżew:無論如何,我無法回答)。但你是對的,這是重複的。 – Jan

+0

沒問題。事實上,在我結束這個問題後,你回答了〜2分鐘。這只是允許在已經開始時發佈答案。 –

相關問題