javascript版本
正则
(?<=\[).+?(?=\])
脚本
/(?<=\[).+?(?=\])/.exec("[2021-06-17 16:25:55.815] [INFO] [http-nio-8080-exec-8]")[0];
"2021-06-17 16:25:55.815"
java版本
正则
(?<=\[).+?(?=\])
脚本
Pattern pattern = Pattern.compile("(?<=\\[).+?(?=\\])");
String message = "[2021-06-17 17:19:10.579] [INFO] [http-nio-8080-exec-14] ";
Matcher m = pattern.matcher(message);
//日期转换
if (m.find()) {
System.out.println(m.group(0));
}
这里用的就是正则的先行断言和后行断言
正则表达式的先行断言和后行断言一共有 4 种形式:
- (?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion)
- (?!pattern) 零宽负向先行断言(zero-width negative lookahead assertion)
- (?<=pattern) 零宽正向后行断言(zero-width positive lookbehind assertion)
- (?<!pattern) 零宽负向后行断言(zero-width negative lookbehind assertion)
正则表达式的先行断言(lookahead)和后行断言(lookbehind)
https://www.runoob.com/w3cnote/reg-lookahead-lookbehind.html
参考:
https://segmentfault.com/q/1010000008553692
https://my.oschina.net/u/3797416/blog/3171717
脚本测试地址
https://tool.oschina.net/regex/
本文详细介绍了正则表达式中的先行断言与后行断言,包括四种不同的形式,并通过JavaScript及Java实例展示了如何使用这些断言来匹配特定模式。
1143

被折叠的 条评论
为什么被折叠?



