史上最全的正则表达式多行匹配例子 from karlzheng@csdn
来源:互联网 发布:聚类算法实践 编辑:程序博客网 时间:2024/06/06 18:56
经常碰到想查找多行匹配的时候,比如:有一份log如下:
commit 0b79912f43f110f64f60aba1244c71c4b0656b4cAuthor: xxx <xxx@758d13f7-6a34-8146-8d86-37c7f849097d>Date: Mon Oct 22 09:26:30 2012 +0000 usb输出更多的调试信息commit e1d14cca93a417327d78a40a2787cb137ef8ef1dAuthor: zhengkl <zhengkl@758d13f7-6a34-8146-8d86-37c7f849097d>Date: Mon Oct 22 08:58:04 2012 +0000 修改modem hsic_net_data_handler处理函数commit e02c4740435cd4cbbd1ee7e31b513ffcb03ea906Author: xxx <xxx@758d13f7-6a34-8146-8d86-37c7f849097d>Date: Mon Oct 22 07:45:02 2012 +0000 lcd add gamma_setting version 1 for ID code 0x1h.
想实现git log --author zhengkl的功能:
vim脚本:func! MyFindEndLine(linenr)let l:buf_end_line = line('$')let l:line = a:linenrwhile l:line <= l:buf_end_linelet l:line += 1let l:line_buf = getline(l:line)if matchstr(l:line_buf, "^commit") != ""return (l:line - 1)enendwreturn l:buf_end_lineendffunc! MyFindTextBlockFunc(string)let g:mylist = []exec "g /".a:string."/call add(g:mylist, line('.'))"let l:text = []for i in g:mylistlet l:end_line = MyFindEndLine(i)call extend(l:text, getline(i - 1, l:end_line))call writefile(l:text, "test.txt")endfoendf:call MyFindTextBlockFunc("zhengkl")
awk脚本:#!/bin/awk -f {is_end_file = 1if (match($0, "commit")) {a = $0do {is_end_file = !getlineif (match($0, "zhengkl")) {print aprint $0is_end_file = !getlinewhile (! match($0, "commit")) {print $0is_end_file = getlinea = $0}} else {is_end_file = !getlinea =$0}} while(is_end_file != 1);}}
sed脚本:/^commit/ {: get_commithn/zhengkl/ {Hxp: readagainn/^commit/ {b get_commit}pb readagain}}
当然最方便的还是vim命令:
g/zhengkl/-1;,/commit/-1 write >> test.txt
- 史上最全的正则表达式多行匹配例子 from karlzheng@csdn
- php 正则表达式匹配中文的例子
- [Python]几个正则表达式匹配的例子
- 正则表达式匹配的一个例子
- 模糊匹配字符的正则表达式+例子
- python非贪婪、多行匹配正则表达式例子
- 匹配多行字符的正则表达式
- 正则表达式,多行匹配
- 正则表达式匹配多行
- 正则表达式匹配form表单中所有内容的例子
- java 通过正则表达式获取匹配字符串的例子
- 一个匹配URL的正则表达式例子(带详细解释)
- 匹配的正则表达式
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- (学习)python非贪婪、多行匹配正则表达式例子
- 啊哈 !C语言的小编程~
- eclipse_集成Properties_Editor
- 修改MFC程序标题
- 那放肆的青春的伤感日志-某人、因为…而想你
- struts2 json配置
- 史上最全的正则表达式多行匹配例子 from karlzheng@csdn
- 【Hash\KMP\线段树】文明的复兴
- OpenStack之Swift:swift表结构
- 利息计算器
- 中缀表达式转换为后缀表达式
- 3 ways to run Java main from Maven
- 关于MVC学习(1)
- 找工作不如在家自己做手工活
- 即使她很难相信,但她还是会选择等待