|
楼主 |
发表于 2017-6-19 17:01
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 c001q 于 2017-6-19 17:06 编辑
当我们知道了 使用 \b 可以匹配单词边界(字母和空格之间的位置)后,下个问题是 如何匹配以a字母开头的单词,我们先来看看正确的表达式应该怎样写的。
图中显示,图中我们使用的正则表达式为:\ba\w*\b 。它正确的匹配到了4个以 小写a开头的单词(见红框部分)。我们第一眼看到这个表达式,会感觉它很乱,但它实际上是由4个部分组成。见下图:
这个表达式中,新出现了一个 \w* ,\w 表示的是[a-z] 这26个字母中的任意一个字母。星号 * 表示 将 前面的 \w 重复零次或多次。是不是有点难理解,没关系,接着往下看。
我们知道,在英语有许许多多,以a 开头的单词,这些单词,除了第一个字母是a 以外,后面跟了多少个字母,我们根本无法确认。有可能,a 后面有2个字母,如 abs,也有可能有8个字母,如 albatross。也有可能在 a 的后面没有任何的字母,如不定冠词 a。因此,为了描述的方便,在正则表达式中我们就将这种 无法确认个数 的情况,统一用 * 来表示。这种表示数量的符号类似的还有 ? 和 +,以及实例1中介绍的的 {1,3} 这种形式。它们之间存在等效的关系。
* 等效于 {0,} a\w{0,} 或 a\w* 匹配以 a开头的单词,a的后面可以没有任何字母,也可以有任意多个小写英文字母。
? 等效于{0,1} a\w{0,1} 或 a\w? 匹配以a开头的单词,a的后面,可以没有任何字母,也可有拥有1个字母。也就是说匹配的内容长度,不能超过2个字母,可以匹配 ab、ac、ad,但不能匹配,abc,adddd,adetfg,
+ 等效于 {1,} a\w{1,}或 a\w+ 匹配以a开头的单词,a的后面,至少 要有一个字母。
看完了上面的内容后,不知道大家是否理解了 \ba\w*\b 这个表达式的意思了呢?如有不明白的地方欢迎留言。
使用 \w* 的原因在于,我们并不关心文本中以 a 开头的单词的长度。只要它是一个单词,并且以 a 开头,那么这个字符串就是我们所需要的。
|
评分
-
1
查看全部评分
-
|