简体   繁体   English

TPerlRegEx:如何跨多行匹配任何字符

[英]TPerlRegEx : How to match any character across multiple lines

I am new to TPerlRegEx. 我是TPerlRegEx的新手。 Have a problem to match data from the data block due to some data have additional line is created randomly by the system. 由于某些数据有额外的行是由系统随机创建的,因此从数据块中匹配数据存在问题。

Data 数据

Opt: 
<NVR IP: 192.168.2.163>
<SRC IP: 192.168.2.123>
<TYPE: 5>
<INPUT: 2>


<Alarm ID:66

 Time:  29/07/2010 12:18:12 PM
 State: 1
 Assigned User: 0
 Assigned Time: 01/01/1970 8:00:00 AM
 Ack Time:  01/01/1970 8:00:00 AM>

<Alarm ID:67
 Time:  29/07/2010 3:11:07 PM
 State: 1
 Assigned User: 0
 Assigned Time: 01/01/1970 8:00:00 AM
 Ack Time:  01/01/1970 8:00:00 AM>

<Alarm ID:68
 Time:  29/07/2010 3:11:08 PM
 State: 1
 Assigned User: 0
 Assigned Time: 01/01/1970 8:00:00 AM
 Ack Time:  01/01/1970 8:00:00 AM>

Alarms got successfully

Here is my regular expression which can only match alarm 67 and 68. Alarm 66 has a additional line below and this line is randomly appear within the data block. 这是我的正则表达式,只能与警报67和68匹配。警报66在下面还有另外一行,并且该行随机出现在数据块内。

<Alarm\x20ID:.*?\r\n\t.*?\r\n\t.*?\r\n\t.*?\r\n\t.*?\r\n\t.*?>
<Alarm\x20ID:.*?\r+\n+\t*.*?\r+\n+\t*.*?\r+\n+\t*.*?\r+\n+\t*.*?\r+\n+\t*.*?>

也许更好

<Alarm\x20ID:.*?(\r\n)+\t*.*?(\r\n)+\t*.*?(\r\n)+\t*.*?(\r\n)+\t*.*?(\r\n)+\t*.*?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM