我试图为我的流利服务器编写自己的RegEx。 这是我的正则表达式:
^(?<server>)\[(?<time>[^\]]*)\] (.*) \[(?<filename>[^\]]*)\:(?<line>[^\]]*)\](.*) To: (?<to>((?!\ \-\- Headers).)*)(.*) ((?=From:[ ]*(?<from>[^:]*) ([a-zA-Z\-:]*)))
使用日志示例:https://regex101.com/r/yJ7rU4/1
我想为我的服务器组的RegEx定义一个值,但我不知道如何编写它以及它是否可能。我的解析文件没有写入此值,我想将此信息直接放在我的表达式上,如下所示:
^(?<server>=serv1)\[(?<time>[^\]]*)\] (.*) \[(?<filename>[^\]]*)\:(?<line>[^\]]*)\](.*) To: (?<to>((?!\ \-\- Headers).)*)(.*) ((?=From:[ ]*(?<from>[^:]*) ([a-zA-Z\-:]*)))
答案 0 :(得分:0)
如果你想捕获一些可选的字符串(如果它存在并将它放在你的服务器组中),那么你只需使用一个0或更多的贪心量词......就像这样:
^(?<server>.*?)\[(?<time>[^\]]*)\] (.*) \[(?<filename>[^\]]*)\:(?<line>[^\]]*)\](.*) To: (?<to>((?!\ \-\- Headers).)*)(.*) ((?=From:[ ]*(?<from>[^:]*) ([a-zA-Z\-:]*)))
^^^---Here
<强> Working demo 强>
如果您需要服务器名称,可以使用+
操作
^(?<server>.+?)\[(?<time>[^\]]*)\] (.*) \[(?<filename>[^\]]*)\:(?<line>[^\]]*)\](.*) To: (?<to>((?!\ \-\- Headers).)*)(.*) ((?=From:[ ]*(?<from>[^:]*) ([a-zA-Z\-:]*)))
^^^---Here