WEB开发网
开发学院软件开发C语言 C#正则表达式高级技巧及实例详解 阅读

C#正则表达式高级技巧及实例详解

 2009-06-10 08:32:04 来源:WEB开发网   
核心提示: 懒惰操作符把上面的式子稍作修改,加上一个问号(?),C#正则表达式高级技巧及实例详解(2),能让表达式变懒惰:/<h1>.*?<\/h1>/这样它会觉得,只需匹配到第一个 h1 结尾标签就完成任务了,例如,下面这个简单例子的目的是匹配出引号内部的内容:# 建立匹配数

懒惰操作符

把上面的式子稍作修改,加上一个问号(?),能让表达式变懒惰:

/<h1>.*?<\/h1>/

这样它会觉得,只需匹配到第一个 h1 结尾标签就完成任务了。

另一个有着类似属性的贪婪操作符是 {n,} 。它代表之前的匹配模式重复n次或n次以上,如果没有加上问号,它会寻找尽可能多的重复次数,加上的话,则会尽可能少重复(当然也就是“重复n次”最少)。

# 建立字串

$str = 'hihihi oops hi';

# 使用贪婪的{n,}操作符进行匹配

preg_match( '/(hi){2,}/', $str, $matches );  # matches[0] 将是 'hihihi'

# 使用堕化了的 {n,}? 操作符匹配

preg_match( '/(hi){2,}?/', $str, $matches );  # matches[0] 将是 'hihi'

2. 回返引用(Back referencing)

有什么用?

回返引用(Back referencing)一般被翻译成“反向引用”、“后向引用”、“向后引用”,个人觉得“回返引用”更为贴切[笨活儿]。它是在正则表达式内部引用之前捕获到的内容的方法。例如,下面这个简单例子的目的是匹配出引号内部的内容:

# 建立匹配数组

$matches = array();

# 建立字串

$str = ""This is a 'string'"";

# 用正则表达式捕捉内容

preg_match( "/(\"|').*?(\"|')/", $str, $matches );

# 输出整个匹配字串

echo  $matches[0];

它会输出:

"This is a'

显然,这并不是我们想要的内容。

上一页  1 2 3 4 5 6 7  下一页

Tags:正则 表达式 高级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接