gpt4 book ai didi

c# - 当 regex101 匹配时,RegEx C# 不匹配

转载 作者:行者123 更新时间:2023-11-30 17:30:48 25 4
gpt4 key购买 nike

这是我的模式:

-{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

它确实与几个在线正则表达式测试器匹配,但与 C# 测试器不匹配,如 http://regexstorm.net/tester , 因为

.NET does not use Posix syntax

我注意到如果我删除模式的最后一部分

INCOMING CALL(?:[\S\s][^-])*

它确实匹配,但仍然不正确,或者至少不是我所期望的。

我应该更改什么以使此模式与字符串匹配?

最佳答案

问题与模式类型无关,该模式实际上不符合 POSIX,因为不能在括号表达式内使用正则表达式转义(请参阅模式中的 [\S\s],它可以与 RegexOptions.Singleline 选项一起写为 .,或写为 (?s:.)).

在这里您需要做的就是将 \n 替换为 \r?\n(?:\r\n?|\n) 以匹配 Windows 换行符样式。

使用

-{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})[ ]*(?:\r?\n[ \S]*)*INCOMING CALL(?:[\S\s][^-])*

参见 this regex demo .

关于c# - 当 regex101 匹配时,RegEx C# 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49106318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com