博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

欧阳.剑

欢迎大家光临欧阳.剑的寒舍! 我是一名软件开发员 希望大家能够一起努力 再一次唱响那响亮的口号 --- 好好学习,天天向上
   ouyangxiaodong.cublog.cn
关于作者  
姓名:欧阳.剑
职业:软件开发
年龄:1980年生
位置:现在西安,或许改天就挪地了
个性介绍:喜允计算机软件开发,喜欢与资深人员交流
我的msn:feifanbaqi.sohu.com

我的分类  




perl学习笔记之<正则表达式>
1 表达式修饰符if、unless、while、untile、foreach
2 DATA文件句柄:__DATA__标志着脚本的逻辑结束,并打开DATA文件句柄用于读取。
3 m运算符:如果包围正则表达式的定界符是斜杠,m运算符是可选的;如果忙乱变了定界符,则是要求的。
  格式:/Regular Expression/ or m#Regular Expression# or m(Regular expression)
  匹配修饰符:i-大小写无关  g-全局匹配   x-允许注释与空白  o-只编译模式一次
  s-嵌入新行时,将字符串作为单行处理  m-将字符串作为多行处理
4 给特殊标量$&赋值在上一次成功搜索中匹配的字符串。$'(备份引号)保存在匹配模式之前找到的内容,而$'(直接引号)保存模式匹配之后找到的内容。
5 s运算符和替换,格式:s/old/new/ or s(odl)/new/ or ...
  替换修饰符:以上提到的+e将夫换端作为表达式求值
6 格式绑定运算符:
  前面在默认模式空间$_变量上的模式搜索是隐式完成的,如果不将字符串存储在变量$_中,而且需要对字符串过行匹配或替换,就要使用模式绑定运算符=~或!~。它们还在tr函数中用于字符串翻译。
7 用于单字符的元字符:
  .-除新行外的任何字符               [a-z0-9]任何单字符
  [^a-z0-9]不在集合中的任何单字符     \d-一个数字(大写为非数字)
  \w-数字(字)字符(大写为非数字字母(非字)字符
 注意:
    s修饰符:点元字符和新行
    脱字符^
    POSIX字符类:用于确保跨平台可移植的工业标准(求反字符,只要在字符串前加^)
      [:alnum:]字母数字字符                  [:alpha:]字母字符
      [:ascii:]0-127数值字符                [:cntrl:]控制字符
      [:digit:]数字                         [:graph:]字母数字标点以外的非空字符
      [:lower:]小写                         [:print:]与[:graph:]同,但有空格
      [:punct:]标点                         [:space:]所有的空白字符
      [:upper:]大写                         [:word:]字母或下划线
      [:xdigit:]十六进制
8 白空元字符:(大写为非)
  \s-白空字符                   \n新行           \r回车
  \t制表位                      \h进纸
9 关闭贪婪性的元字符。通过在贪婪限定符之后放置问号,就关闭了贪婪性,搜索在第一个匹配后结束,而不是到最后一个。
10 锚点:
   ^行或字符串的开头              $行或字符串的末尾
   \A只匹配字符串的开头           \Z匹配字符串或行的末尾
   \z只匹配字符串的末尾           \G匹配前面的m//g离开之处
   \b匹配边界(大写为非边界)
  m修饰符用于控制$和^锚元字符的行为。含有新行的字符串作为多行对待。
11 记忆或捕获:如果正则表达式包含在括弧中,则创建子模式。子模式保存在特殊编号的标量变量中,从$1开始。这些变量以后用于程序并保持到发生其化成功的模式匹配,些是将其清除。即使想要控制贪婪元字符或前一例子中展示的交替行为,保存子模式也具有副作用.可以使用?:元字符取消子模式的捕获。
例:
$fruit="apple pears peaches plums";
$fruit=~/(.*)\s(.*)\s(.*)/;
print "$1\n";
print "$2\n";
print "$3\n";
print "-"x39,"\n";
$fruit="apples pears peaches plums";
$fruit=~/(.*?)\(.*?)\s(.*?)/;
print "$1\n";
print "$2\n";
print "$3\n";
(Output)
apples pears
peaches
plums
-----------------------
apples
pears
peaches
12 前后查找元字符:
/pattern(?=pattern)/正向前查找         /pattern(?!pattern)/负向前查找
(?<=pattern)/pattern/正向后查找        (?<!pattern)/pattern/负向后查找
13 tr或y函数:以一种一对一的对应,将搜索字符串中的字符转换成替换字符串中的字符。返回其替换的字符数。d选项删除搜索字符串,c选项补充搜索字符串,s选项称为挤压选项。
14 统一字符编码Unicode:是解决这个问题的一种方式,通过创建新的字符集,称为utf8或uft16,其中的字母不限制为一字节。(先用use8包含)(如\p的p大写,则意义相反)
\p{IsASCII}ASCII字符               \p{Cntr}控制字符
\p{IsDigit}     \p{IsGraph}字母数字或标点字符          \p{IsLower}
\p{IsPrint}字母数字或标点字符或空格   \p{IsPunct}标点       \p{IsSpace}白空
\p{IsUpper}大写字母   \p{IsWord}字母数字字符或下划线   \p{IsXDigit}十六进制

 发表于: 2007-05-08,修改于: 2007-05-08 18:34 已浏览774次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.03276

京ICP证041476号