Python - ^在正则表达式中的作用
^在正则表达式中有两个作用,一是表达以什么开头,二是表达对什么取反。有时候经常傻傻的分不清楚,接下来给大家详细介绍该怎么用这个^
准备一个python文件test.py,借用re.search函数举例说明
# coding=utf-8
import re s = ['abc-123-cba', #'abc'在最前面
'123-abc-aabbcc-123', #'abc'在中间
'a-2-3-b-1', #最前面是'a'
'b-x-c-a-1', #最前面是'b'
'z-a-1', #'a'在中间
'x-y-z', #字符串没有任何'a','b','c'
'cbaabc' #字符串全是'a','b','c'组成
] st = r'abc'
for i in s:
m = re.search(st, i)
if m:
print(i)
1.当st = r'abc'时,执行python文件得到的结果如下
abc-123-cba
123-abc-aabbcc-123
cbaabc
字符串中有'abc'就匹配成功
2.当st = r'[abc]'时,执行python文件得到的结果如下
abc-123-cba
123-abc-aabbcc-123
a-2-3-b-1
b-x-c-a-1
z-a-1
cbaabc
字符串中只要有'a'或'b'或'c',就匹配出来
3.当st = r'^abc'时,执行python文件得到的结果如下
abc-123-cba
字符串中只有'abc'开头的才匹配出来
4.当st = '^[abc]'时,执行python文件得到的结果如下
abc-123-cba
a-2-3-b-1
b-x-c-a-1
cbaabc
字符串由'a'或'b'或'c'开头的都匹配出来了
5.当st = '[^abc]'时,执行python文件得到的结果如下
abc-123-cba
123-abc-aabbcc-123
a-2-3-b-1
b-x-c-a-1
z-a-1
x-y-z
字符串只要有除'a'和'b'和'c'的字符就都匹配出来了,这跟第三种情况是相反的
总结:
'abc'表示字符串中有'abc'就匹配成功
'[abc]'表示字符串中有'a'或'b'或'c'就匹配成功
'^abc'表示字符串由'abc'开头就匹配成功
'^[abc]'表示字符串由'a'或'b'或'c'开头的,
'[^abc]'表示匹配'a','b','c'之外的字符。如果一个字符串是由'a','b','c'组合起来的,那就是假
当^表示取反的时候,只有一种情况,就是在中括号里面,而且是每一个字符之外的。所以千万不要把'[^abc]'看成是对'abc'字符串的取反。
如果想使用对'abc'字符串取反,则只能更改代码
st = r'abc'
for i in s:
m = re.search(st, i)
if not m
列举常用的取反:
'[^a-z]' 所有小写字母之外的字符
'[^a-zA-Z]' 所有大写和小写字母之外的字符
'[^0-9]' 所有数字之外的字符
如果文章有错误,还望您指正。
Python - ^在正则表达式中的作用的更多相关文章
- 【Python】正则表达式中使用变量
我们有时想把变量放进正则表达式中来匹配想要的结果.Python中使用 re.compile(r''+变量+''),其中正则表达式中的“变量”应为字符串形式. import re regex_test_ ...
- python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...
- 【python】正则表达式中的转义问题
encode('string-escape') 解决 比如想匹配'\x0e\x0a'中的'\x'后的内容,这里希望把'\x0e'作为一个字符串,那么其中的\应该被转义. 未加转义的正则: p = '( ...
- 每天一点python:正则表达式中的findall方法
举例:使用findall获取所有匹配的正则表达式文本,然后逐一替换. #! python3 """ A regular expression example: find ...
- Python正则表达式中的re.S的作用
在Python的正则表达式中,有一个参数为re.S.它表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串,包括“\n”.看如下代码: import re a = '''asdfhellopas ...
- Python正则表达式中的re.S,re.M,re.I的作用
正则表达式可以包含一些可选标志修饰符来控制匹配的模式.修饰符被指定为一个可选的标志.多个标志可以通过按位 OR(|) 它们来指定.如 re.I | re.M 被设置成 I 和 M 标志: 修饰符 描述 ...
- Python正则表达式中的re.S
title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...
- 正则表达式中的.*?和python中re.S参数的详解
本章的内容主要是为讲解在正则表达式中常用的.*?和re.S! 在正则表达式中有贪婪匹配和最小匹配:如下为贪婪匹配(.*) import re match = re.search(r'PY.*', 'P ...
- Python3 re模块正则表达式中的re.S
在Python的正则表达式中,有一个参数为re.S.它表示"."(不包含外侧双引号,下同)的作用扩展到整个字符串,包括"\n".看如下代码: import re ...
随机推荐
- 09-Node.js学习笔记-异步编程
同步API,异步API 同步API:只有当前API执行完成后,才能继续执行下一个API console.log('before'); console.log('after'); 异步API:当前API ...
- 一些常用的 redis 的操作配置(对String、hash)
import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org. ...
- Windows10安装ubuntu16.04双系统教程
写在前面:本教程为windows10安装ubuntu16.04(64位)双系统教程,是我多次安装双系统的经验总结,安装方法同样适用于ubuntu18.04(64位).为了直观和易于理解,我会尽量图文并 ...
- 【ST开发板评测】Nucleo-F411RE开箱报告
前言 面包板又举办开发板试用活动了,很荣幸能获得一块ST官方的Nucleo-F411RE开发板,感谢面包板社区和ST意法半导体的赞助,这是我第一次试用官方的开发板,收到板子后查了一些关于ST官方开发板 ...
- 在python操作数据库中游标的使用方法
cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetcho ...
- 写了个爬虫代理ip的脚本给大家使用
写了个爬虫代理ip的脚本给大家使用 一.代码 import requests from lxml.html import etree url = 'http://www.kuaidaili.com/f ...
- react-native自定义Modal模态框|仿ios、微信弹窗RN版
前序 纵观每个优质项目,无论web端还是native原生应用开发,弹窗都是不可忽视的一环,能很大程度上直接决定用户体验.如:微信.支付宝.ios都有很成熟的一套弹窗UI展示场景. 最近一直沉迷在rea ...
- Android 图表控件的使用
一个简单不复杂的图表控件ChartLibs,目前仅仅提供三种图表控件:饼图.条形图和线性图.其展示效果 如下: 使用方法很简单,直接通过gradle导入ChartLibs依赖就可以,在build.gr ...
- 查找 oracle 数据库中包含某一字段的所有表的表名
select table_name from DBA_TAB_COLUMNS where COLUMN_NAME='字段名'; 字段名需要大写
- Access denied for user 'root@localhost' (using password:NO)问题的解决
错误详情: 使用pymysql连接数据库mysql,一直无法连接上, conn = pymysql.connect(host='localhost', port=3306, user='root', ...