2017-04-20 86 views
0

我有一個日誌文件,其內容如下所示。我試圖提取xml分割,匹配少數itemnumber讓我們說6654721,6654722和6654725.預期的輸出是完整的xml分割與這三個itemnumber匹配。我嘗試使用正則表達式(<Record>.*? </Record>),它正好找到每個xml分段,然後嘗試應用像(<Record>.*?(6654721|6654722|6654725).*?</Record>)這樣的過濾器,但這不像預期的那樣工作。你能幫我解決這個問題嗎?感謝您在advanace的迴應。Notepad ++ reg表達式從日誌文件中提取xml消息

2017-04-20 some log file 
2017-04-20 some log file 
2017-04-20 some log file 
<Record> 
    <itemname>Lego Fire Rescue</itemname> 
    <itemnumber>6654721</itemnumber> 
    <availableinv>19</availableinv> 
    <ageplus>3</ageplus> 
    <storeId>19</storeId> 
</Record> 
2017-04-20 some log file 
2017-04-20 some log file 
2017-04-20 some log file 
<Record> 
    <itemname>Lego Fire Rescue</itemname> 
    <itemnumber>6654722</itemnumber> 
    <availableinv>19</availableinv> 
    <ageplus>3</ageplus> 
    <storeId>19</storeId> 
</Record> 
2017-04-20 some log file 
2017-04-20 some log file 
2017-04-20 some log file 
<Record> 
    <itemname>Lego Fire Rescue</itemname> 
    <itemnumber>6654723</itemnumber> 
    <availableinv>19</availableinv> 
    <ageplus>3</ageplus> 
    <storeId>19</storeId> 
</Record> 
2017-04-20 some log file 
2017-04-20 some log file 
2017-04-20 some log file 
<Record> 
    <itemname>Lego Fire Rescue</itemname> 
    <itemnumber>6654725</itemnumber> 
    <availableinv>19</availableinv> 
    <ageplus>3</ageplus> 
    <storeId>19</storeId> 
</Record> 

回答

1

此正則表達式做這項工作:

<Record[^>]*>(?:(?!</Record>).)*\b(?:6654721|6654722|6654725)\b.*?</Record> 

說明:

<Record[^>]>  : '<Record>' with optional attributes 
(?:     : start non capture group 
    (?!    : start negative lookahead, make sure we have not the following 
     </Record> : literally '</Record>' 
    )    : end lookahead 
    .    : any character 
)*     : repeat the non capture group, at this place we are sure we have not </Record> 
\b     : word boundary 
(?:     : non capture group 
    6654721   : 6654721 
    |    : OR 
    6654722   : 6654722 
    |    : OR 
    6654725   : 6654725 
)     : end group 
\b     : word boundary 
.*?     : 0 or more any character, non greedy 
</Record>   : literally '</Record>' 
+0

大,這完美的作品。正是我所期待的。讚賞。如果標籤中的某些標籤具有像這樣的屬性,是否可以幫助我使其工作。我仍然希望看到相同的迴應。 – Ponns

+2

如果這個答案解決了你的問題,你應該接受它。 – Pharaoh

+0

@Ponn:看我的編輯。 – Toto

相關問題