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
试试这个[^|]*?[|]?
agents.sinke.s1.serializer.regex =[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?x写四遍吗? 小新嘟嘟 发表于 2017-8-4 20:28
agents.sinke.s1.serializer.regex =[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?,[^|]*?[|]?x写四遍吗?
一遍即可
我试试去 谢谢了 不会在请教 w123aw 发表于 2017-8-4 20:31
一遍即可
不好使 我试了下
试试这个正则分组, 格式必须是固定的
([\\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]