繁体   English   中英

使用连字符作为正则表达式的字符串

[英]Use hyphen as string for regex

我在开发了一个正则表达式,用于检查日志文件中的特定模式。

字符串看起来像这样:

05-20-2013 15:57:09.334715 [del1-dhp-26330] Read 100 entries from syslog file test

我的正则表达式函数是

\d\d-\d\d-\d\d\d\d \d\d:\d\d:\d\d.\d\d\d\d\d\d [@"+agentName+"]"+" Read 100 entries from "+flatFileLogSourceName;

其中代理名称和flatfilelogsource名称将检索字符串中的各个值。

但是收到错误消息说[xy]范围是反向顺序。这应该是由于代理名称,因为它包含连字符。

所以我基本上是在寻找可能逃避连字符作为一个字符串的方法等等@确实给\\

对于您收到的错误消息,我认为"[@"+agentName+"]"应该写为"\\[@"+agentName+"\\]"就像大多数正则表达式一样,尽管我不知道C#。

快速说明

方括号构成一个类,是要匹配的有效字符的一种集合。 这些类可以使用范围[0-9]来匹配十进制表示法中的数字,或者使用[0-7]来匹配八进制表示法中的数字。 并匹配[ae]与a,b,c,d或e匹配的字符。 但是范围不能相反。 因此[az]是有效范围,但[za]不是有效范围。 为避免创建字符类,必须用反斜杠转义方括号

\\是正则表达式转义符。

这应该工作:

"\d{2}\-\d{2}\-\d{4} \d{2}:\d{2}:\d{2}\.\d{6} \["+agentName+"\] Read 100 entries from "+flatFileLogSourceName

编辑:虽然看到这句话使我对您实际要求的内容感到困惑:

其中代理名称和flatfilelogsource名称将检索字符串中的各个值。

如果您尝试从正则表达式匹配项中提取数据,这应该对您有所帮助: http : //www.regular-expressions.info/named.html

暂无
暂无

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

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