正则表达式 - 字符匹配不以某字段开头或者结尾
在文件搜索或数据库查询中,经常会遇到一种场景,需要过滤以某段字符开头或结尾,或者不以某段字符开头或结尾的判断,这个时候最先想到的就是正则匹配。
以或不以某字符串开头
向前匹配
以str开头
- ^ 判断是否是开头
以多个不同str开头
示例:
1
2
3
4
5
|
>>> import re
>>> print(re.match('^(https)', 'https://example.com').span())
(0, 5)
>>> print(re.match('^(www)', 'https://example.com'))
None
|
否定式前项匹配
- ^ 判断是否是开头
- ?! 这里是否定向前查询
示例:
1
2
3
4
5
|
>>> print(re.match('^(?!www)', 'https://example.com').span())
(0, 0)
>>> print(re.match('^(?!https)', 'https://example.com'))
None
|
以或不以某字符串结尾
向后匹配
以str结尾
- $ 判断是否是结尾
示例:
1
2
3
|
>>> print(re.match('.*(com)$', 'https://example.com').span())
(0, 19)
|
否定式后项匹配
不以str结尾
- $ 判断是否是结尾
- ?<! 否定向后查询
示例:
1
2
|
>>> print(re.match('.*(?<!cn)$', 'https://example.com').span())
(0, 19)
|