前端之家收集整理的这篇文章主要介绍了
正则表达式的知识普及,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1.什么事正则表达
正则表达式是可以匹配文本片段的模式。例如'python'可以用来匹配字符串'python'。你可以用这种匹配行为搜索文本中的模式,并且用计算后的值替换特定模式,或者将文本进行分段。
正则表达式可以匹配任意一个的字符串。符号为(.),可以匹配除了换行之外的任意字符。例如正则表达式‘.ython',可以匹配’python',或者'jython',或者' ython'等,但不能匹配'cpython'或者'ython'这两个,因为(.)表示一个字符串,而不是没有或者多于一个。
但,当真的需要匹配(.)这个符号时,需要用到转义字符\。例如正则表达式'python\.org'匹配'python.org'。而如果是'python.org',则还可以匹配'pythonaorg'或者'pythonworg'等,不符合我们的想法。
可以使用中括号来创建字符集,表示中括号内的任意字符。例如正则表达式'[pj]ython'匹配'python'和'jython',其他
内容就不能再匹配了。而[a-z]表示字符集a到z中的任意一个字符,可以选用反转字符[^a-c]表示除了a,b,c外的任意一个字符。
如果我们只想从几个里面选择其中一个的话,可以使用管道符号(|),例如正则表达式'python|perl',就只可以从'python'或者'perl’两个匹配中选择一个。可以对那个表达式进行简化,得到'p(ython|erl)'。这就是子模式。
在子模式后面加上问号,就变成可选项。它可能会出现在匹配字符串中,但并非必须的。例如,下面这个正则表达式:‘(http://)?(www\.)?python\.org',这里会匹配'http://www.python.org'或者'http://python.org'或者'www.python.org'或者'python.org'这四种情况。
问号表示子模式可以不出现或者出现一次。其他情况就如下
(pattern)*:表示pattern可以出现0次,1,次,2次等等
(pattern)+:表示pattern至少出现1次
(pattern){m,n}:表示pattern至少出现m次,至多出现n次
目前为止,所出现的模式匹配都是针对整个字符串,但也可以对表达式的字符串确定其开始位置还是结尾位置。(^)
标记开始,美元符号($)表示结尾。如(^ht+p)就是表示h开头的字符串,而(ht+p$)表示p结尾的字符串。