正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
以上出自百度百科,通俗点说就是拥有一些特殊能力的字符,普通的字符比如a就表示a,元字符.可以表示任意字符
这里说一下换行与回车的区别
换行符就是另起一新行,光标在新行的开头;回车符就是光标回到一旧行的开头(即光标目前所在的行为旧行)
也就是说键盘上的回车键是用来进行实现换行的
使用[]来表示任意字符,[]代表一个字符集合,可以匹配所包含的任意一个字符,注意只能匹配一个
比如[abc]可以匹配a或者b或者c
在 [] 中加入 ^ 可以匹配未包含的任意字符,比如 [ ^abc ] 匹配除了abc的任意一个字符
在 [] 中加入 - 匹配指定范围内的任意字符,这个指定范围使用 ASCII 码来判断,比如 [ a-z ],表示匹配 a 到 z 中的任意一个字符
在 [] 中的 . 表示普通的 .
[] 可以被看成一个字符
前面使用到了中括号,这里可以使用大括号
配合前面的 [],正则表达式就有操作空间了,比如 [a-z]*,可以匹配 abcabcabc
中括号和大括号都出现了,怎么能少的了小括号
使用 () 定义一个子表达式。子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,可以在 () 中使用元字符
这么做有什么好处?比如(ab){2,}可以匹配ababab
windows和linux下对换行符处理不同
使用 Windows 系统时,程序用 enter 换行,真正朝文件中写的是\r\n(0x0d0x0a) ,同时读取时程序真正读取的是\n
使用 Linux 系统时,程序用 enter 换行,真正朝文件中写的是\n(0x0a) ,同时读取时程序真正读取的是\n
因此,有些正则表达式或者程序在win中可以正常运行,在Linux下确不能
正则表达式在线测试以及常用正则表达式查询
https://c.runoob.com/front-end/854/
可视化理解正则
https://jex.im/regulex/#!flags=&re=%5E(a%7Cb)*%3F%24