有没有办法从右到左匹配正则表达式?我正在寻找的是正则表达式
MODULE WAS INSERTED EVENT
LOST SIGNAL ON E1/T1 LINK OFF
CRC ERROR EVENT
CLK IS DIFF FROM MASTER CLK SRC OF
Run Code Online (Sandbox Code Playgroud)
从这个输入
CLI MUX trap received: (022) CL-B MCL-2ETH MODULE WAS INSERTED EVENT 07-05-2010 12:08:40
CLI MUX trap received: (090) IO-2 ML-1E1 EX1 LOST SIGNAL ON E1/T1 LINK OFF 04-06-2010 09:58:58
CLI MUX trap received: (094) IO-2 ML-1E1 EX1 CRC ERROR EVENT 04-06-2010 09:58:59
CLI MUX trap received: (009) CLK IS DIFF FROM MASTER CLK SRC OFF 07-05-2010 12:07:32
Run Code Online (Sandbox Code Playgroud)
如果我可以从右到左完成匹配,我可以写出类似于(EVENT | OFF)的所有内容,直到第二次出现多个空格[] +
我今天做的最好的事情就是用正则表达式从(022)到EVENT
CLI MUX trap received: \([0-9]+\)[ ]+(.*[ ]+(EVENT|OFF))
Run Code Online (Sandbox Code Playgroud)
但那不是我想要的:)
编辑:它用于什么语言?它实际上是我们拥有的过滤器的配置字符串,但我猜它是使用标准的GNU C Regex库.
编辑2:我喜欢关于切割长度的答案,但Amarghosh可能更像我正在寻找的东西.真的不知道为什么我不考虑只是缩短长度:
^.{56}(.{39}).*$
Run Code Online (Sandbox Code Playgroud)
非常感谢快速回答......
Jul*_*rau 20
在.NET中,您可以使用以下RightToLeft 选项:
Regex RE = new Regex(Pattern, RegexOptions.RightToLeft);
Match theMatch = RE.Match(Source);
Run Code Online (Sandbox Code Playgroud)
如果标记保证由多个空格分隔,并且字符串中的单词之前EVENT|OFF保证仅由一个空格分隔 - 只有这样您才能查找单空格分隔的单词,后跟空格,后跟EVENT或OFF
var s = "CLI MUX trap received: (022) CL-B MCL-2ETH MODULE WAS INSERTED EVENT 07-05-2010 12:08:40"
+ "\nCLI MUX trap received: (090) IO-2 ML-1E1 EX1 LOST SIGNAL ON E1/T1 LINK OFF 04-06-2010 09:58:58"
+ "\nCLI MUX trap received: (094) IO-2 ML-1E1 EX1 CRC ERROR EVENT 04-06-2010 09:58:59"
+ "\nCLI MUX trap received: (009) CLK IS DIFF FROM MASTER CLK SRC OFF 07-05-2010 12:07:32"
var r = /\([0-9]+\).+?((?:[^ ]+ )* +(?:EVENT|OFF))/g;
var m;
while((m = r.exec(s)) != null)
console.log(m[1]);
Run Code Online (Sandbox Code Playgroud)
输出:
MODULE WAS INSERTED EVENT
LOST SIGNAL ON E1/T1 LINK OFF
CRC ERROR EVENT
CLK IS DIFF FROM MASTER CLK SRC OFF
Run Code Online (Sandbox Code Playgroud)
正则表达式:/\([0-9]+\).+?((?:[^ ]+ )* +(?:EVENT|OFF))/g
\([0-9]+\) #digits in parentheses followed by
.+? #some characters - minimum required (non-greedy)
( #start capturing
(?:[^ ]+ )* #non-space characters separated by a space
` +` #more spaces (separating string and event/off -
#backticks added for emphasis), followed by
(?:EVENT|OFF) #EVENT or OFF
) #stop capturing
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18524 次 |
| 最近记录: |