Notepad++ 记事本++;reg表达式从日志文件中提取xml消息

Notepad++ 记事本++;reg表达式从日志文件中提取xml消息,notepad++,Notepad++,我有一个日志文件,其内容如下。我试图提取与少量itemnumber匹配的xml分段,比如6654721、6654722和6654725。预期的输出是完整的xml分段,与这三个itemnumber匹配。我尝试使用正则表达式(.*?,它精确地找到了每个xml分段,然后我尝试应用类似(.*(6654721 | 6654722 | 6654725)。*?)的过滤器,但这并没有按预期工作。有人能帮我解决这个问题吗?感谢您的及时回复 2017-04-20 some log file 2017-04-20

我有一个日志文件,其内容如下。我试图提取与少量itemnumber匹配的xml分段,比如6654721、6654722和6654725。预期的输出是完整的xml分段,与这三个itemnumber匹配。我尝试使用正则表达式
(.*?
,它精确地找到了每个xml分段,然后我尝试应用类似
(.*(6654721 | 6654722 | 6654725)。*?)
的过滤器,但这并没有按预期工作。有人能帮我解决这个问题吗?感谢您的及时回复

 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>
2017-04-20一些日志文件
2017-04-20一些日志文件
2017-04-20一些日志文件
乐高消防救援
6654721
19
3.
19
2017-04-20一些日志文件
2017-04-20一些日志文件
2017-04-20一些日志文件
乐高消防救援
6654722
19
3.
19
2017-04-20一些日志文件
2017-04-20一些日志文件
2017-04-20一些日志文件
乐高消防救援
6654723
19
3.
19
2017-04-20一些日志文件
2017-04-20一些日志文件
2017-04-20一些日志文件
乐高消防救援
6654725
19
3.
19

此正则表达式执行以下任务:

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

<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>'
]>:“”具有可选属性
(?::启动非捕获组
(?!:开始负前瞻,确保我们没有以下内容
:字面意思为“
):结束展望
:任何字符
)*:重复非捕获组,在这里我们确定没有
\b:词界
(?::非捕获组
6654721         : 6654721
|:或
6654722         : 6654722
|:或
6654725         : 6654725
):端组
\b:词界
.*?                 : 0个或更多任意字符,非贪婪
:字面意思为“

太好了,这很好用。正是我想要的。谢谢。如果某些标签具有类似的属性,请帮助我使其工作。我仍然希望看到相同的答复。如果此答复解决了您的问题,您应该接受它。很抱歉延迟答复。你的编辑工作完美。非常感谢您提供的解决方案。另一个帮助是,我尝试按照线程中建议的“搜索-->书签-->复制书签行”选项复制所有匹配行,它只是复制每个匹配的第一行,而不是复制每个匹配的所有行。有没有办法复制每场比赛的所有行?@Ponns:对不起,我看不到解决办法。您可以在Npp社区中找到一些帮助: