一、皮特派
\d : [0-9a-fA-F]表示一个数,范围在这个集合里面
\d+:表示多个数 ,\d*:表示数可能不存在
\s:表示空格
不确定有没有空格,就用\s*;确定有空格,但数量不定,就用\s+
[0-9.]:\d只能表示集合里面的数,但是这里有. 所以直接写集合
[()\-]:斜杠在集合里面表示‘到’的意思,所以这里使用需要'\'来将它转意
{3}:如果明确有三个字符,就用大括号将数字写死,如果不确定,也可以用‘+’表示,但是这里有可能有,有可能没有,所以‘+’不能用,但是可以用‘*’
^:放在开头,限定\d代表的数字为开头,如果是‘aaaa0:’这样的就不匹配
表示行结束,使用$表示
第四行的正则表达式:
expPID = "^\d+:\s*ta\s*=\s*[0-9.\-]+\s*,\s*[()\-]{3}\s*err\s*=\s*[0-9.\-]+\s*,\s*[()\-]*\s*pp\s*=\s*[0-9.\-]\s*,/s*[()\-]\s*ii\s*=\s*[0-9.\-]+\s*,/s*[()\-]\s*pid\s*=\s*[0-9.\-]+\s*,\s*duty\s*=\s*[0-9.\-]+\s*$" ;
拼接用法
expNum = "[0-9.\-]" ;
expPID = stract("^\d+:\s*ta\s*=\s*",expNum,"+\s*,\s*[()\-]{3}\s*err\s*=\s*[0-9.\-]+\s*,\s*[()\-]*\s*pp\s*=\s*[0-9.\-]\s*,/s*[()\-]\s*ii\s*=\s*[0-9.\-]+\s*,/s*[()\-]\s*pid\s*=\s*[0-9.\-]+\s*,\s*duty\s*=\s*[0-9.\-]+\s*$" );
提取信息:
expPID = "^\d+:\s*ta\s*=\s*([0-9.\-]+)\s*,\s*[()\-]{3}\s*err\s*=\s*[0-9.\-]+\s*,\s*[()\-]*\s*pp\s*=\s*[0-9.\-]\s*,/s*[()\-]\s*ii\s*=\s*[0-9.\-]+\s*,/s*[()\-]\s*pid\s*=\s*[0-9.\-]+\s*,\s*duty\s*=\s*[0-9.\-]+\s*$" ;
以提取866.00000举例:先用括号将正则表达式内此信息提取出来
expPID = "^\d+:\s*ta\s*=\s*(?<ta>[0-9.\-]+)\s*,\s*[()\-]{3}\s*err\s*=\s*(?<err>[0-9.\-]+)\s*,\s*[()\-]*\s*pp\s*=\s*(?<pp>[0-9.\-]+)\s*,/s*[()\-]\s*ii\s*=\s*(?<ii>[0-9.\-]+)\s*,/s*[()\-]\s*pid\s*=\s*(?<pid>[0-9.\-]+)\s*,\s*duty\s*=\s*(?<duty>[0-9.\-]+)\s*$"
此时ta=866.00000 ...依次类推
锚位:
i am a student.
i amplitude a student
1. expI = "am" 所有的“am”都会被匹配到
expI = "\bam\b" 只有“am”这个单词会被匹配到,“am”前后都不准有字幕,“\b”代表边界
在vim里面,使用\<am\>表示\bam\b
matlab perl | vim |
\b\b | \<\> |
+ | \+ |
{3} | \{3\} |
替换:
[range]s/pattern/string/[c,e,g,i]
range: 范围, 1,7 指第一行至第七行. 也可以使用 % 代表当前的文章(也可以理解为全部的行), # 代表前一次编辑的文章(基本不用)
s : 代表当前的模式为替换
/: 作为分隔符, 如果确实要替换文中的 /, 那么可以使用 # 代替作为分隔符. 例如 :s#vi/#vim#g, 代表替换 vi/ 为 vim
pattern : 要被替换掉的字符
string : 将要使用的字符
c : confirm, 每次替换前会询问
e: ignore, 忽略错误(默认找不到会提示 pattern not found, 但是如果设置 vim 设置批量替换命令的话某一个项未匹配到不能影响到下一项的执行, 可以使用此关键字, :silent %s/x/y/g == :%s/x/y/ge )
g : global, 整行替换(基本上是必加的, 否则只会替换每一行的第一个符合字符)
i : ignore, 不区分大小写
I: 区分大小写
:30,152s/ \([a-z_0-9]\+_pdpu\)/ [1:0] \1/g
“:”:gvin查找模式
30,152s:替换范围
可以直接替换,也可以在pattern里面使用\(A\),在string里面依次\1,\2引用A,如实例。