【发布时间】:2010-12-02 15:42:35
【问题描述】:
我通过以下方式从服务器接收输入(示例输入数据):
[1284336000]: host1;event1;flag;state;counter;errors or warnings
[1284336000]: host2;event1;flag;state;counter;errors or warnings
[1284336000]: host1;event2;flag;state;counter;errors or warnings
[1284336000]: host2;event2;flag;state;counter;errors or warnings
我必须匹配输入并根据匹配创建一个值为 hostname-eventname 的变量。
我的正则表达式
^\[\d+\]:\s((host1);(event1)|(host2);(event2)|(host3);(event2)|(host2);(event1));(\w+);(\w+);(\d).+$
我希望在 $2 或 $3 等引用变量中分别包含主机和事件的名称。
例如,考虑这个输入:
[1284336000]: host1;event1;flag;state;counter;errors or warnings
我需要根据上面匹配的主机名和事件名创建一个名称为<hostname-eventname>的变量。
说,
$myVar=$2-$3 (that is, $myVar=host1-event1)
我无法再应用任何拆分操作。所以没有编程:我只能读取输入数据。是的,正则表达式属于 Perl 正则表达式类型。
我不知道我是否澄清了我的问题?
【问题讨论】:
标签: regex perl backreference capturing-group