标签:
it/科技正则表达式多行greta |
分类: 程序人生 |
<syslog company="COMPANY" product="PRODUCT">
</syslog>
需要从中提取出ip、端口、时间以及摘要(digest),可采用如下正则表达式:
<type>sign</type>[^.]+<srcip>(\S+)</srcip>[^.]+<dstip>(\S+)</dstip>[^.]+<srcport>(\d+)</srcport>[^.]+<dstport>(\d+)</dstport>[^.]+<protocol>(\w+)</protocol>[^.]+<time>(\S+
\S+)</time>[^.]+<engine>(\S+)</engine>[^.]+<digest>(\S+)</digest>
其本质是使用[^.]来匹配换行符,引擎内部依然使用单行模式。因为早期使用正则表达式的工具是基于行的。它们都是一行一行的读入一个文件,将正则表达式分别应用到每一行上去。在这些工具中,字符串是不包含换行符的。因此“.”也就从不匹配新行符。所以[^.]就能匹配换行符。