【发布时间】:2018-08-12 20:43:50
【问题描述】:
这是我的模式:
-{8}\s+((?:[0-9]{2}\/[0-9]{2}\/[0-9]{2})\s+(?:[0-9]{2}:[0-9]{2}:[0-9]{2}))\s+(?:LINE)\s+=\s+([0-9]{0,9})\s+(?:STN)\s+=\s+([0-9]{0,9})[ ]*(?:\n[ \S]*)*INCOMING CALL(?:[\S\s][^-])*
这是我的字符串:
-------- 02/16/18 13:50:39 LINE = 0248 STN = 629
CALLING NUMBER 252
NAME Mar Ant
UNKNOWN
DNIS NUMBER 255
BC = SPEECH
VOIP CALL
00:00:00 INCOMING CALL RINGING 0:09
LINE = 0004
00:00:25 CALL RELEASED
它确实与几个在线正则表达式测试器匹配,但与 http://regexstorm.net/tester 等 C# 测试器不匹配,因为
.NET 不使用 Posix 语法
我注意到如果我删除了模式的最后一部分
INCOMING CALL(?:[\S\s][^-])*
它确实匹配,但仍然不正确,或者至少不是我所期望的。
我应该改变什么来使这个模式匹配字符串?
【问题讨论】:
-
我的字符串末尾有一个新行 (\n),我显然看不到。通过在验证之前修剪输入来解决它。