正则表达式5____单词边界和字符串边界

来源:互联网 发布:netbeans for php使用 编辑:程序博客网 时间:2024/05/15 02:49

位置匹配

在使用正则表达式时,如果只需要对某段文本里的特定位置进行匹配,通过位置匹配可以解决这个问题,也就是使用边界限定符,在正则表达式里用一些特殊的元字符来表明想让匹配操作在什么位置发生

一 单词边界 

1. 由限定符\b指定的单词边界 (b 指 boundary边界),  \b用来匹配一个单词的开始或结尾

一个示例  The cat  scattered  his food all over  the  room

正则表达式  \bcat\b

结果  The cat  scattered his food  all over  the room

单词 cat 前后各有一个空格,与模式\bcat\b相匹配,空格是用来分隔单词的字符之一.

\b  匹配的是这样一个位置:  这个位置位于一个能够用来构成单词的字符(字母、数字和下划线)  和一个不能用来构成单词的字符 之间

如果要匹配一个完整的单词,必须在要匹配的文本的前后都加上 \b 限定符

\b 匹配且只匹配一个位置,不匹配任何字符, 用 \bcat\b匹配到的字符串的长度是 3个字符,而不是 5个字符

2. 如果不匹配一个单词边界(即 字母数字下划线之间,或者非字母数字下划线之间),使用\B

看一个示例

Please  enter  the nine-digit  id as  it appears on your  color - coded  pass-key

正则表达式 \B-\B

结果

Please  enter  the nine-digit  id as  it appears on your  color - coded  pass-key

\B-\B 将匹配个前后都不是单词边界的连字符.

二 字符串边界

用来定义字符串边界的元字符有两个:  一个用来定义字符串开头的 ^, 另一个是用来定义字符串结尾的 $.

^  是几个有着多种用途的元字符之一。只有当它出现在一个字符集合里(放在[和]之间) 并紧路在左方括号 [ 的后面时,它才能发挥 "求非" 作用。如果是在一个字符集合的外面并位于一个模式的开头, ^ 将匹配字符串的开头.

一个示例

<?xml  version="1.0"  encoding="UTF-8" ?>

<wsdl:definitions  targetNamespace=http://tips.cf>

正则表达式 ^\s*<\?xml.*?\?>

结果

<?xml  version="1.0"  encoding="UTF-8" ?>

<wsdl:definitions  targetNamespace=http://tips.cf>

在这里 ^\s* 将匹配一个字符串的开头位置和随后的零或多个空白字符, 注意还用到了懒惰型元字符

\s*$ 匹配一个字符结尾处的 0个或多个空白字符.

 

分行匹配模式: 正则表达式支持使用一些特殊的元字符去改变另外一些元字符行为的做法,用来启用分行匹配模式(multiline  mode)  的 (?m) 记号就是一个能够改变其他元字符行为的元字符序列. 

在使用时, (?m) 必须出现在整个模式的最前面.

原创粉丝点击