IT技术博客大学习 共学习 共进步

理解正则表达式中顺序环视、逆序环视

小小子 2010-11-22 21:20:28 浏览 2,724 次

学习正则表达式中,这个顺序环视和逆序环视,搞的比较头晕。

所以,我决定还是写在日志里吧。这样以后回忆起来方便,如果哪里理解错了,路过的朋友们请帮忙指出,谢谢!

所谓顺序环视和逆序环视,首先要理解,这个环视匹配的什么?不是内容,而是位置。并且是位置的前后要匹配对应的内容。这样理解就事半功倍了。

先来看顺序环视,这个顺序说的是从左往右看。这样,一旦使用顺序环视,例如:(?=\d) 其说的就是位置的右侧有一个数字。也就是说在一个数字前面的位置。

这样理解下来,再来看逆序环视,这个顺序是从右往左看。这样一旦使用逆序环视,例如:(?<=\d) 其说的就是位置的左侧有一个数字。也就是说在一个数字后面的位置。

简单理解清楚了,那么就可以按照书中的为美元加逗号描述了,代码如下:

(我们的美元逗号是如下规则:左侧一定要有数字,逗号的所在位置右侧一定有三个数字)

print "Please input a number \n";

$input = <STDIN>;

chomp($input);

if( $input =~ m(\d+)){
    $input =~ s/(?<=\d)(?=(\d\d\d)+$)/,/g;
    print "output is $input \n";
} else {
    print "You must input a number \n";
}

建议继续学习

  1. grep 正则表达式选项要记得转义 (阅读 6,445)
  2. 统计最近用过的linux命令 (阅读 6,405)
  3. 正则表达式基础 (阅读 6,163)
  4. 正则表达式的与或非 (阅读 5,744)
  5. 学习Grep,Sed中的正则 (阅读 5,267)
  6. URL正则表达式 (阅读 4,663)
  7. 正则表达式简要入门 (阅读 4,365)
  8. 正则转义符汇总 (阅读 4,322)
  9. 使用Oracle正则表达式监控应用到数据库的连接情况 (阅读 4,267)
  10. PHP 正则里面的两个重要技巧 (阅读 4,262)