4.1.4 不包含验证(2)
来源:互联网 发布:知敬畏的含义 编辑:程序博客网 时间:2024/04/30 17:01
当英文单词的结尾为字母B时,正则表达式/b[A-Z]*B[^P][A-Z]*/b将匹配失败。原因如下:
表达式[^P]总是要匹配一个字符;
当英文单词的结尾为字母B时,[^P]将会匹配该英文单词之后的分割符,如空格、句号等。
为了解决上述问题,可以使用零宽度负预测先行断言(?!experssion)。它能够断言自身位置的后面不能匹配字符串experssion。以下正则表达式都能够简单验证字母B之后不能为字母P的任意英文单词。
/b[A-Z]*B(?!P)[A-Z]*/b (37)
/b[A-Z]{0,}B(?!P)[A-Z]{0,}/b (38)
正则表达式(37)解释:
/b匹配英文单词的边界,即英文单词的开始位置或结束位置。
[A-Z]*可以匹配空字符串,或者匹配最小长度为1的、由大写英文字母组成的字符串。
B匹配字母B。
(?!P)能够断言字母B之后不能为字母P。
使用工具Regex Tester分别测试正则表达式(37)和(38),结果分别如图(37)和(38)所示。
注意:正则表达式/b[A-Z]*B[^P][A-Z]*/b、/b[A-Z]{0,}B[^P][A-Z]{0,}/b、/b[A-Z]*B(?!P)[A-Z]*/b和/b[A-Z]{0,}B(?!P)[A-Z]{0,}/b都不能精确匹配字母B之后不能为字母P类型的英文单词。
其中,正则表达式/b[A-Z]*B[^P][A-Z]*/b和/b[A-Z]{0,}B[^P][A-Z]{0,}/b除了匹配字母B之后不能为字母 P类型的英文单词之外,还能够匹配以下2种情况。
(1)英文单词中包含多个字母B。此时,上述正则表达式可以匹配字母B之后是字母P的英文单词;
(2)英文单词字母B之后的字符不是字母,如字符/、数字等。此时,上述正则表达式可以匹配不是一个英文单词的字符串。
其中,正则表达式/b[A-Z]*B(?!P)[A-Z]*/b和/b[A-Z]{0,}B(?!P)[A-Z]{0,}/b除了匹配字母B之后不能为字 母P类型的英文单词之外,还能够匹配上述的第一种情况。
使用工具Regex Tester对上述两种情况进行了测试,结果分别如图(1)和(2)所示。其中,测试的正则表达式(37)。
- 4.1.4 不包含验证(2)
- 4.1.4 不包含验证
- 不包含定义
- Linq select 不包含
- oracle minus 不包含
- 4.2.4 包含指定字符串的文件全名验证
- 正则表达式匹配:包含且不包含
- 验证字符串是否包含符号
- 包含 和 不包含 只包含的问题 全不包含 求SQL
- IListSource 不包含任何数据源。
- 正则表达式之不包含
- 正则表达式不包含属性
- 正则不包含的前瞻
- 不包含“Contains”的定义
- IListSource 不包含任何数据源
- impdp不包含空闲block
- 不包含“SaveChanges”的定义
- 取出文件名称 不包含扩展名
- 4.1.5 具有重复特征的英文单词验证(2)
- opencv中宽度和高度的下标范围
- 模块机器人及计算机辅助设计
- PHP5.2.5+IIS5.1+MySql+WinXP安装
- asp.net图片下载的文件头设置
- 4.1.4 不包含验证(2)
- 充分理解java中的参数传递~!
- Eclipse启动参数大全
- Excel 可能会用到的一些技巧
- Oracle函数大全
- 行连接和行迁移的区别
- HTML 表格特效
- HttpHandlers元素
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响