小新嘟嘟 发表于 2017-8-4 19:57:34

flume 的 agents.sinke.s1.serializer.regex 的正则表达式属性怎么设置

数据格式   
2017-08-02 13:10:19.094|HSFBizProcessor-5-thread-155|DEBUG|setMember begin typeId=, key=, expireTime=
2017-08-02 13:10:19.097|HSFBizProcessor-5-thread-155|DEBUG|CoralCacheJedisImpl(351).setMember()|pipeline started
2017-08-02 13:10:19.097|HSFBizProcessor-5-thread-155|DEBUG|realkey=

根据 | 分割数据 保存到 一个列镞4个列中c1 c2 c3 c4
flume 的agents.sinke.s1.serializer.regex 这个属性怎么配置

agents.sinke.s1.serializer.regex =^([^|]+),([^|]+),([^|]+),([^|]+)$这么写不起作用

w123aw 发表于 2017-8-4 20:26:00

试试这个[^|]*?[|]?

小新嘟嘟 发表于 2017-8-4 20:28:48

w123aw 发表于 2017-8-4 20:26
试试这个[^|]*?[|]?

agents.sinke.s1.serializer.regex =[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?x写四遍吗?

w123aw 发表于 2017-8-4 20:31:11

小新嘟嘟 发表于 2017-8-4 20:28
agents.sinke.s1.serializer.regex =[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?x写四遍吗?

一遍即可

小新嘟嘟 发表于 2017-8-4 20:32:47

我试试去 谢谢了 不会在请教

小新嘟嘟 发表于 2017-8-4 22:15:14

w123aw 发表于 2017-8-4 20:31
一遍即可

不好使 我试了下

J20_果农 发表于 2017-8-5 13:52:36

试试这个正则分组, 格式必须是固定的

([\\S\\s]*)\\|(\\S+)\\|([\\S\\s]*)\\|([\\S\\s]*)

下面是java版本带分组名的
(?<g1>[\\S\\s]*)\\|(?<g2>\\S+)\\|(?<g3>[\\S\\s]*)\\|(?<g4>[\\S\\s]*)

下面是测试的代码。
                Stringpattern = "(?<g1>[\\S\\s]*)\\|(?<g2>\\S+)\\|(?<g3>[\\S\\s]*)\\|(?<g4>[\\S\\s]*)";
                String str = "2017-08-02 13:10:19.094|HSFBizProcessor-5-thread-155|DEBUG|setMember begin typeId=, key=, expireTime=";
                StringBuffer buf = new StringBuffer("");
                Pattern r = Pattern.compile(pattern);
                Matcher m = r.matcher(str);
               
                if(m.find()){
                        System.err.println("true");
                        System.err.println(m.group("g1") + ","+ m.group("g2") + "," + m.group("g3") + "," +m.group("g4") );
                        
                }
页: [1]
查看完整版本: flume 的 agents.sinke.s1.serializer.regex 的正则表达式属性怎么设置