方括号表示某些字符允许在一个字符串中的某一特定位置出现:
“[ab]”:表示一个字符串有一个"a"或"b"(相当于"a|b");
“[a-d]”:表示一个字符串包含小写的’a’到’d’中的一个(相当于"a|b|c|d"或者"[abcd]");
“^[a-zA-Z]”:表示一个以字母开头的字符串;
“[0-9]%”:表示一个百分号前有一位的数字;
“,[a-zA-Z0-9]$”:表示一个字符串以一个逗号后面跟着一个字母或数字结束;
你也可以在方括号里用’
‘表示不希望出现的字符,’
'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表示两个百分号中不应该出现字母)。
[xyz] :字符集(character set),匹配这个集合中的任一 一个字符(或元字符)
[^xyz] :不匹配这个集合中的任何一个字符
\b :匹配一个单词的边界
\B :匹配一个单词的非边界
\d :匹配一个字数字符,等同于[0-9]
\D :匹配一个非字数字符,等同于[^0-9]
\n :匹配一个换行符
\r :匹配一个回车符
\s :匹配一个空白字符,包括n,r,f,t,v等
\S :匹配一个非空白字符,等于/[^nfrtv]/
\t :匹配一个制表符
\v :匹配一个重直制表符
\w :匹配字母或数字或下划线或汉字,等于[a-zA-Z0-9_]
\W :匹配字母或数字或下划线或汉字以外的字符,等于[^a-zA-Z0-9_]
\x :匹配十六进制数字,等同于[0-9A-Fa-f]。
\X :匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
只匹配单独的单词Jerry:”< Jerry \ >“ ,这个只匹配单词两边为空白(空格、制表等)的单词,Jerry_Tom这类则匹配不到。
匹配单词开头: <
匹配单词结尾:>
(搜索)命令: /正则表达式
(替换)命令: s/正则表达式/替换字符串/选项
选项可以是:i 表示不论大小写都匹配; g 表示匹配当前行中的所有匹配的字符串; d 表示删除
把所有单词help或Help都改为大写的HELP : %s/[Hh]elp/HELP/g
%表示匹配当前文档中所有行,你也可以指定部分行 1,20 s/[Hh]elp/HELP/g
使用单个空格替换一个或多个空格:%s/ \+/ /g
删除所有空行(没有任何字符,除了一个回车符)
:g/^$/d
:g/^[ tab]*[ tab]*$/d
删除含有某些字符的行:g/ERROR/d
删除每行的所有的前导空格:%s/^ *//g
在文件中的每一行的开始插入->(或者其它字符):%s/^/->/
在每一行的尾部加上一个句号(或其他字符):%s/$/。/g
删除以数字开头的行 : %s/^\d.*$//g
删除以[a,b,c]开头的行 : %s/^[a|b|c].*$//g
删除重复行 : %s/^\(.*\)\n\1$/\1/g
使用\(和\)符号括起正则表达式,即可在后面使用\1、\2等变量来访问\(和\)中的内容。
例如:交换列表中所有连字符分隔的条目的顺序ABC : XYZ:%s/\(.*\):\(.*\)/\2 : \1/g
用来直接处理文件
简单实例
:
1、删除所有空行:sed ‘s/^$/d’ *.txt
使用js的replace方法
stringObject.replace(
regex
p/substr,replacement)
第一个参数可以是正则,可以是string,第二个参数是代替的文本,使用正则则可一次性替代多个字符
let val = " 美 '”“’‘' 女 ,明‘’‘’”“<>”“‘’''‘’ ''星, 萌》《宠,”欧 ”“”“冠“ "
let arr = val.split(',').map( function (curr) {
return curr.
正则表达式
要要匹配的内容应该有头有尾,就是说要匹配的的区间应把的的前面部分和后面部分都写出来,匹配的字符串才会更加准确
例如相匹配有a的意思就是匹配内容有无数个a或者没有a的行**a的实际匹配内容是全部内容**
**.**就是匹配任意一个字符
以a开头就是^a
以a结尾就是a&
[^]的意思就是括号里面的内容取反进行匹配
匹配空白行grep -n “^&” 文件名 找出文件中的...
\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
对
正则表达式
功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"...
正则表达式
中的
特殊字符
一个
正则表达式
可以由简单的字符构成,比如 /abc/,也可以是简单和
特殊字符
的组合,比如 /ab*c/ 。其中
特殊字符
也被称为元字符,在
正则表达式
中是具有特殊意义的专用符号,如 ^ 、$ 、+ 等。
特殊字符
非常多,可以参考:
jQuery 手册:
正则表达式
部分
正则表达式
中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
正则表达式
中的
特殊字符
,就是一些有特殊含义的字符,如“*.txt”中的*,简单的说就是表示任何字符串的意思
如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。
正则表达式
有以下
特殊字符
。需要转义
特别字符说明
匹配输入字符串的结尾位置。如果设置了
RegEx
p 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本
一
正则表达式
的正文。
正则表达式
中使用了特殊符号。下面我就将各种符号以及其意义和用法简单的介绍一下(说明:“X以上包括X”):
/ 表示在其后的文字是特殊符号。例:“n"和"n"是一致的。”/n"和换行符是一致的。
^ 和输入的开始一致。
$ 和输入的结尾一致。
“" 与此符号之前的文字0次以上相同的话,两者一致。例:"zo"和"zoo”,"z"都一致。
"+ " 与此符号之前的文字1次以上相同的话,两者一致。例:"zo*"和"zoo"一致,但和"z"不一致。
? 与此符号之前的文字0次或1次相同的话,
String
regEx
="[\n`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。, 、?✅\uD83D\uDFE7]";
Pattern p = Pattern.compile(
regEx
, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
str = m.repla
literal 匹配文本字符串的字面值 literal foo
re1|re2 匹配
正则表达式
re1 或者 re2 foo|bar
. 匹配任何字符(除了\n 之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 /bin/*sh$
* 匹配 0 次或者多次前面...