簡體   English   中英

grep不在xml上使用正則表達式返回預期結果

[英]grep not returning expected result with regex on xml

我在某些xml上運行了一個grep命令,它似乎在誤解我要使用的正則表達式。

這是命令

grep '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml

似乎正在發生的是,正則表達式的?>方面似乎沒有匹配,而不是匹配到>的第一次出現

有任何想法嗎?

默認情況下,grep使用基本正則表達式並考慮? 作為文字問號。 要將其視為正則表達式語法,需要轉義該字符。

grep '<ernm:NewReleaseMessage.*\?>' ./075679942012_ORIGNAL.xml

您可以使用-E選項,該選項將模式解釋為擴展的正則表達式

grep -E '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml

注意:上面的代碼將返回與模式匹配的整行,如果只需要匹配的文本,請使用-o選項,該選項僅打印匹配行的匹配部分。

grep -o '<ernm:NewReleaseMessage.*\?>' ./075679942012_ORIGNAL.xml

要么

grep -Eo '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml

如果您想使文本最多出現在>字符的前面,請嘗試以下命令,

 grep -o '<ernm:NewReleaseMessage[^>]*>' file

如果要整行,請刪除-o參數。

例:

$ cat aa1.txt
<ernm:NewReleaseMessage blah> foo bar>
$ grep -o '<ernm:NewReleaseMessage[^>]*>' aa1.txt
<ernm:NewReleaseMessage blah>

-o grep僅輸出匹配的文本。

[^>]* -不>零的字符。 因此,它最多匹配首次出現的>字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM