解析Perl正则表达式用法

开发 架构
Perl语言的Perl正则表达式功能十分强大,基本上是常用语言中最强大的,很多语言如Java设计正则式支持的时候都参考Perl正则表达式。

本文和大家重点讨论一下Perl正则表达式的概念,Perl正则表达式有很多值得学习的地方,很多语言如Java设计正则式支持的时候都参考Perl正则表达式。本文介绍Perl正则表达式中最基本、最常用的部分。

Perl正则表达式初步

Perl语言的Perl正则表达式功能十分强大,基本上是常用语言中***大的,很多语言如Java设计正则式支持的时候都参考Perl正则表达式。本文介绍Perl正则表达式中最基本、最常用的部分。

一、Perl正则表达式运算符

=~Perl正则表达式匹配运算符,左边是待匹配字符串,右边是Perl正则表达式,匹配结果设置在$1,$2等变量中,在scaler上下文中,成功匹配返回匹配个数,否则返回false。例如$var=~/foo/;
!~Perl正则表达式匹配运算符,和=~不同的是它忽略匹配结果,且返回值相反。例如$var!~/foo/;

Perl正则表达式运算符右边是Perl正则表达式,有如下三种形式:

1.匹配模式m/pattern/igmsoxc

m表示match,pattern是正则式内容,分隔符/可以用任意其他字符如#替换,igmsoxc是可选的参数,意义如下:
i忽略大小写
g匹配所有符合的(默认是匹配***个符合的)
m多行模式,^和$分别匹配行的开始和结尾(默认匹配字符串的开始和结尾)
s单行模式,“.”匹配“\n”(默认不匹配)
ocompilepatternOnce
xeXtendedlegibility-freewhitespaceandcomments
cdon'tresetposonfailedmatcheswhenusing/g

2.存储模式qr/pattern/imsox

qr将Perl正则表达式存储到一个变量中,这样可以反复使用,可选项意义与m相同

3.替换模式s/pattern/replacement/igmsoxe

s代表substitutes,将匹配的模式pattern替换为replacement,多了一个可选项:
e将replacement作为一个表达式执行

4.一次性匹配模式?pattern?

和m/pattern/相同,但是只进行一次匹配,?不能用其他分隔符替换


二、Perl正则表达式中基本语法元素

\字符转义
.匹配除\n外的任意字符
^匹配行或字符串开头
$匹配行或字符串结尾
*0个或多个
+1个或多个
?0个或1个
{...}指定个数
[...]字符类,匹配括号中的任意一字符
(...)匹配组,匹配后可以用$1,$2等获取相应的匹配组
(?:...)聚集,匹配后不能$1,$2等获取相应的匹配组,速度会快些
|前者或后者,一般和括弧配合使用
\1,\2...正则式中反引用匹配组


三、Perl正则表达式中常见转义字符

\aAlarm(beep)

详细出处参考:http://www.itqun.net/content-detail/93504.html

 

  1. \eEscape  
  2. \fFormfeed  
  3. \nNewline  
  4. \rCarriagereturn  
  5. \tTab  
  6. \037AnyoctalASCIIvalue  
  7. \x7fAnyhexadecimalASCIIvalue  
  8. \x{263a}Awidehexadecimalvalue  
  9. \cxControl-x  
  10. \N{name}Anamedcharacter  
  11.  
  12. \lLowercasenextcharacter  
  13. \uTitlecasenextcharacter  
  14. \LLowercaseuntil\E  
  15. \UUppercaseuntil\E  
  16. \QDisablepatternmetacharactersuntil\E  
  17. \EEndcasemodification  
  18. \bwordboudariy  
  19.  

 

四、Perl正则表达式中字符类

[...]匹配括号中的任意一个字符,但是当***个字符是^时是相反的,匹配除了括号中的字符外的任意字符。另外还有a-z这样的简写方式代替a到z的所有字符。例如:
 

  1. [amy]Match'a','m'or'y'  
  2. [f-j]Dashspecifies"range"  
  3. [f-j-]Dashescapedoratstartorendmeans'dash'  
  4. [^f-j]Caretindicates"matchanycharacter_except_these"  

 

一些字符类有更简单的表达方式,如:
 

  1. \dAdigit[0-9]  
  2. \DAnondigit[^0-9]  
  3. \wAwordcharacter[a-zA-Z0-9_]  
  4. \WAnon-wordcharacter[^a-zA-Z0-9_]  
  5. \sAwhitespacecharacter[\t\n\r\f]  
  6. \SAnon-whitespacecharacter[^\t\n\r\f]  

 

【编辑推荐】

  1. Perl正则表达式的三种形式
  2. Perl正则表达式的八大原则
  3. Perl正则表达式语法解析
  4. 浅析Perl面向对象编程用法
  5. Perl正则表达式的三种形式和八大原则 
责任编辑:佚名 来源: itqun.net
相关推荐

2010-07-19 10:40:16

Perl正则表达式

2010-07-13 17:03:53

Perl正则表达式

2010-08-09 13:58:59

Flex正则表达式

2010-07-14 10:06:55

Perl正则表达式

2010-07-14 09:01:18

Perl正则表达式

2010-07-20 16:25:50

Perl正则表达式

2010-07-14 09:47:04

Perl正则表达式

2010-07-22 09:12:05

Perl正则表达式

2010-07-14 09:55:24

Perl正则表达式

2010-07-13 16:56:30

Perl正则表达式

2010-07-28 11:06:41

Flex正则表达式

2011-06-16 15:28:31

正则表达式

2010-07-09 09:11:33

Ruby正则表达式

2010-08-12 10:35:06

Flex正则表达式

2016-12-05 17:03:59

用法正则表达式

2009-09-16 12:41:42

Perl正则表达式

2010-07-21 10:43:25

Perl正则表达式匹配

2010-07-14 09:24:22

Perl正则表达式

2009-09-16 18:08:14

正则表达式匹配单词

2010-07-19 16:11:20

Perl正则表达式
点赞
收藏

51CTO技术栈公众号