C#正则表达式高级技巧及实例详解
2009-06-10 08:32:04 来源:WEB开发网核心提示: /(?P<quote>"|').*?(?P=quote)/上式中,quote就是组名,C#正则表达式高级技巧及实例详解(4),"|'是改组匹配内容的正则,后面的(?P=quote)是在调用组名为quote的有名组,不就可以匹配这个独立的单词了
/(?P<quote>"|').*?(?P=quote)/
上式中,quote就是组名,"|'是改组匹配内容的正则。后面的(?P=quote)是在调用组名为quote的有名组。这个式子的效果和上面的回调引用实例一样,只不过是用了有名组来实现。是不是更加易读易懂了?
有名组也能用于处理已匹配内容之数组的内部数据。赋予特定正则的组名也能作为所匹配到的内容在数组内部的索引词。
preg_match( '/(?P<quote>"|\')/', "'String'", $matches );
# 下面的语句输出“'”(不包括双引号)
echo $matches[1];
# 使用组名调用,也会输出“'”
echo $matches['quote'];
所以,有名组并不只是让写代码更容易,它也能用于组织代码。
4. 字词边界(Word Boundaries)
字词边界是字串里的字词字符(包括字母、数字和下划线,自然也包括汉字)和非字词字符之间的位置。
其特殊之处就在于,它并不匹配某个实在的字符。它的长度是零。 \b 匹配所有字词边界。
不幸的是,字词边界一般都被忽视掉了,大部分人都没有在意他的现实意义。 例如,如果你想要匹配单词“import”:
/import/
注意了!正则表达式有时候很调皮的。下面的字串也能和上面的式子匹配成功:
important
你或许觉得,只要在import前后加上空格,不就可以匹配这个独立的单词了:
/ import /
那如果遇上这种情况呢:
The trader voted for the import
当 import 这个词在字串开头或者结尾时,修改后的表达式仍然不能用。因此,考虑各种情况是必须的:
更多精彩
赞助商链接