首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正则表达式创建模板

用正则表达式创建模板
EN

Stack Overflow用户
提问于 2017-05-21 12:21:52
回答 1查看 140关注 0票数 1

我想用正则表达式在openvswitch.log上创建一个模板。我有openvswitch.log喜欢跟随文本;

代码语言:javascript
复制
2017-05-18T06:40:02.850Z|00010|ofproto_dpif|INFO|system@ovs-system: Datapath supports recirculation
2017-05-18T06:40:02.850Z|00011|ofproto_dpif|INFO|system@ovs-system: MPLS label stack length probed as 1
2017-05-18T06:40:02.850Z|00012|ofproto_dpif|INFO|system@ovs-system: Datapath supports truncate action
2017-05-18T06:40:02.850Z|00013|ofproto_dpif|INFO|system@ovs-system: Datapath supports unique flow ids
2017-05-18T06:40:02.850Z|00014|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_state
2017-05-18T06:40:02.850Z|00015|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_zone
2017-05-18T06:40:02.850Z|00016|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_mark
2017-05-18T06:40:02.850Z|00017|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_label
2017-05-18T06:40:02.850Z|00018|ofproto_dpif|INFO|system@ovs-system: Datapath supports ct_state_nat
2017-05-18T06:40:02.861Z|00001|ofproto_dpif_upcall(handler1)|INFO|received packet on unassociated datapath port 0
2017-05-18T06:40:02.861Z|00019|bridge|INFO|bridge s1: added interface s1-eth2 on port 2
2017-05-18T06:40:02.862Z|00020|bridge|INFO|bridge s1: added interface s1-eth1 on port 1
2017-05-18T06:40:02.862Z|00021|bridge|INFO|bridge s1: added interface s1-eth3 on port 3
2017-05-18T06:40:02.865Z|00022|bridge|INFO|bridge s1: added interface s1 on port 65534
2017-05-18T06:40:02.865Z|00023|bridge|INFO|bridge s2: added interface s2-eth3 on port 3
2017-05-18T06:40:02.869Z|00024|bridge|INFO|bridge s2: added interface s2-eth2 on port 2
2017-05-18T06:40:02.869Z|00025|bridge|INFO|bridge s2: added interface s2-eth1 on port 1
2017-05-18T06:40:02.873Z|00026|bridge|INFO|bridge s2: added interface s2 on port 65534
2017-05-18T06:40:02.873Z|00027|bridge|INFO|bridge s1: using datapath ID 0000000000000001
2017-05-18T06:40:02.873Z|00028|connmgr|INFO|s1: added service controller "punix:/var/run/openvswitch/s1.mgmt"
2017-05-18T06:40:02.873Z|00029|connmgr|INFO|s1: added service controller "ptcp:6654"
2017-05-18T06:40:02.873Z|00030|connmgr|INFO|s1: added primary controller "tcp:192.168.29.87:6633"
2017-05-18T06:40:02.873Z|00031|rconn|INFO|s1<->tcp:192.168.29.87:6633: connecting...
2017-05-18T06:40:02.877Z|00032|bridge|INFO|bridge s2: using datapath ID 0000000000000002

例如;

s1:在端口上添加了s1-eth2接口

我想搜索“桥接.增加了接口.在端口上.”如何使用正则表达式找到这个模板?我将使用java语言

我写了一个java代码,但没有找到结果

代码语言:javascript
复制
public static void main(String[] args) {
        Pattern p1 = Pattern.compile("bridge (s.*?): added interface (s.*?) on port (\\d+)");
        Matcher m = p1.matcher("bridge s1: added interface s1-eth2 on port 0");
        String log_output = "";

        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            m.appendReplacement(sb, " ");
        }
        m.appendTail(sb);
        System.out.println(sb.toString());

    }

祝大家今天愉快

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-21 12:31:20

你需要在哪里使用那个正则表达式?您可以使用以下方法检测您的行(并将单个s1/s1-eth2/0结果分组):

代码语言:javascript
复制
bridge (.*?): added interface (.*?) on port (\d+)

如果希望分隔符不同(例如,制表符)或具有多个空白字符,则用\s\s+替换空格。

编辑:您没有指定使用哪种语言,也没有指定如何使用regex。下面是如何在Java中访问组:

代码语言:javascript
复制
public static void main(String[] args) {
    Pattern p1 = Pattern.compile("bridge (s.*?): added interface (s.*?) on port (\\d+)");
    Matcher m = p1.matcher("bridge s1: added interface s1-eth2 on port 0");
    while (m.find()) {
        System.out.println("Matched: " + m.group(1) + ", " + m.group(2) + ", " + m.group(3));
        // outputs: Matched: s1, s1-eth2, 0
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44096796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档