正则表达式

2017-08-11  本文已影响0人  Hqmm

正则匹配

理论

正则表达式由常量和算子组成,它们分别指示字符串的集合和在这些集合上的运算

字符串的集合: 即在正则匹配中基本的字符串集
集合上的运算: 即用*.?+这些特殊符号扩展基本字符串集来进行抽象匹配

正则匹配的基本概念

获取匹配
是指系统会在幕后将所有的子模式匹配结果保存起来,供我们查找或者替换。如后向引用的使用

非获取匹配
这时系统并不会保存子模式的匹配结果,子模式的匹配更多的只是作为一种限制条件使用,如正向预查,反向预查,负正向预查,负反向预查等

后向引用
使用\数字代表前面某个子模式的匹配内容

正则匹配示例

下述样例来自18年网易秋招笔试

**问题:**字符串: `src="http://www.wangyi.com"`  
* A: `src="[."]*"`
* B: `src="[^"]*"`
**anwser:** B,在`[.]`表示`.`这个符号,而不是表示匹配任意一个除了`\n`的字符,因此A是匹配不上的

下述样例展示(pattern)保存当前匹配的字符串与向后引用

Text: 
<h1>This is a valid header</h1>
<h2>This is not valid.</h3>
RegEx: 
<h([1-6])>.*?</h\1>
Result: 
<h1>This is a valid header</h1> 

,+,?,{n},{n,},{n,m})这些匹配字符默认是贪心匹配*

Text:                                                            
oooo
RegEx:                       RegEx:
o*?                          o*                       
Result: 
匹配到5个,但是都为空            oooo 

uuid的正则

uuid: [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}

其他的正则可以参考elk中的部分例子elk生态圈

上一篇 下一篇

猜你喜欢

热点阅读