正则表达式的学习心得
2014-09-10 10:39
176 查看
1. 基本正则表达式支持的元字符
元字符 | 描述 | 用法举例 |
. | 匹配任意一个字符。 | a., x.y, x.., .ab. |
[] | 匹配指定范围内的任意字符。 | [abc], [0-9], [a-z], [A-Z], [[:alpha:]], [[digit:]], [[:alnum:]], [[space:]], [[:upper:]], [[:lower:]], [[:punct:]] |
[^] | 匹配指定范围以外的任意字符,即‘[]’的取反。 | [^0-9], [^[:space:]], [^[:punct:]] |
* | 对其前的字符匹配任意次。 | ab*, .*, *ab, xy*z, [[:space:]]*ab, xy[^[:punct:]]* |
? | 对其前的字符匹配0次或1次。使用时要用转义符,即’\?’ | ab?, [[:space:]]?ab, xy[^[:punct:]]? |
{} | 对其前的字符匹配指定区间次。使用时要用转义符,即’\{\}’ | ab\{3\}, ab\{1,\}, ab\{0,3\}, ab\{1,5\} |
() | 分组符。使用时要用转义符,即’\(\)’ | ab\(xyz\)*, \(abc\)like\(xyz\) |
\num | 分组引用。严格意义上并非元字符,而是一种特定的转义。要和分组符联合使用才有意义。 | he \(love\)s his \1r |
^ | 行首锚定符 | ^#.*, ^Root |
$ | 行尾锚定符 | china$, ^$ |
< | 词首锚定符。使用时要用转义符,即’\<’ | \<[[:digit:]], \<Root |
> | 词尾锚定符。使用时要用转义符,即’\>’ | \<root\>, \<[[:alnum:]]*\> |
元字符 | 描述 | 用法举例 |
+ | 对其前的字符匹配至少1次。 | ab+, ^#[[:space:]]+[^[:space:]]+ |
| | 组内多选一符。 | the selection is (yes|no), user name is (root|hadoop|redhat|centos) |
在扩展正则表达式模式下,除了词首锚定符’<’和词尾锚定符’>’使用时要进行转义外,其它元字符都不需要做转义!
3. grep和egrep命令常用的选项
-v 取反显示,即显示表达式不匹配的行。
-o 仅显示被匹配到的文本内容,而非整行的内容。
-i 匹配时不区分字符大小写。
-E 使用扩展的正则表达式模式。
-A num 同时显示匹配到的行的下面num行
-B num 同时显示匹配到的行的上面num行
-C num 同时显示匹配到的行的上面和下面各num行
--color=auto 对匹配到的文本内容用相应字体颜色显示。
-q 静默模式,即不输出任何内容,只关心匹配的执行结果,适合在shell脚本中使用。
-e expr 有多个正则表达式条件时,每个表达式前需用 -e
进行联合多个表达式条件。默认只有一个表达式条件时,-e 可以省略。
4. 正则表达式中关于引用的对应关系
正则表达式中使用’\1’,’\2’,’\3’…引用前面对应的括号中的内容,遵循的原则是:左括号从左到右出现的次序。’\1’引用的内容是从左边开始,第1个左括号开始到其对应的右括号内内容;’\2’引用的内容是从左边开始,第2个左括号开始到其对应的右括号内内容;’\3’引用的内容是从左边开始,第3个左括号开始到其对应的右括号内内容;以此类推。因此,从括号的层次角度,是先引用外层括号内的内容,再引用内层括号内的内容。例:
info.text:
1 xyxyabababxyab
2 xyabxyab
3 xyabxyabxyab
4 xyxyxy
5 xyxyabababxyabxyxyababab
6 xyxyabababxyabxyxyabababxyabxyab
[zjp@localhost test]$ egrep --color=auto "((xy){2}(ab){3})(\2\3)*\1\4{2}"
info.text
6 xyxyabababxyabxyxyabababxyabxyab
5. 在 ` ` 中支持的字符串模式匹配操作符’=~’
不需要对模式匹配操作符右边的正则表达式加引号。支持的正则表达式是扩展的正则表达式模式。即对所有元字符都不需要进行转义。
不支持词首锚定符’<’和词尾锚定符’>’。
lineStr=19934567
if [[ "$lineStr" =~ ([1-9][0-9]+|1[0-9][0-9]) ]] ; then
echo
"$lineStr"
fi
相关文章推荐
- 正则表达式学习心得
- 正则表达式语法学习心得
- (转贴)正则表达式学习心得体会(5)
- 我的正则表达式学习心得(推荐)
- 【学习心得】正则表达式小结
- 正则表达式学习心得体会(2)
- 【正则[规则]表达式学习心得】1、悟透普通字符-字符直接量
- 【正则[规则]表达式学习心得】2、悟透元字符
- 正则表达式学习心得体会(3)(转)
- (转贴)正则表达式学习心得体会(4)
- (转贴)正则表达式学习心得体会(1)
- 正则表达式学习心得
- 正则表达式学习心得
- 正则表达式学习心得
- 正则表达式学习心得
- 【正则[规则]表达式学习心得】3、悟透字符类
- 正则表达式学习心得
- 正则表达式学习
- javascript正则表达式中用于replace的一点心得。
- 正则表达式学习