解读python正则表达式括号问题

作者:zxdqdcxy 时间:2023-08-10 10:22:19 

python正则表达式括号

python中re库函数的简单用法

re.findall(pattern,string)
  • 匹配所有符合正则表达式的字符,返回一个列表

re.search(pattern,string)
  • 查找第一个符合正则表达式的字符,返回一个Matcher对象。用group()或groups()方法取值

re.match(pattern,string)
  • 查找第一个符合正则表达式的字符,要求完全符合,返回一个Matcher对象。用group()或groups()方法取值

正则表达式中的圆括号()的作用是对字符或元字符分组。

我错把它的作用认为是将圆括号内的字符看成一个整体。

尽管在一些正则测试网站上,进行匹配时,把括号内的字符看成一个整体来匹配也能匹配到想要的结果。测试网站如:regex101等

然而在在写python程序的时候,会出现不是我想要的结果。

如果正则表达式中多出使用了圆括号进行分组的话。

在使用findall方法匹配结果就会只有分组的结果(即括号内表达式匹配的内容),而不是整个表达式所匹配的内容。

如果使用search方法匹配,对返回的Matcher对象调用group()方法可以获取完整的结果。但是在需要匹配多个结果时,还得用findall

所以在使用正则表达式时,若像我不太熟悉的话,避免使用圆括号来把一段表达式看成一个整体。

python正则表达式入门教程括号及字符

数据分析遇到字符串处理会有两个阶段涉及到正则表达式,一个是在数据库阶段一个是Python处理阶段。作为一个小白学习正则也遇到很多弯路和难理解的点,梳理梳理学习的过程。

hive里面正则表达式可以用regexp_extract()在select里进行返回指定要求的内容,也可以用regexp在where里进行指定要求的限制条件;

python里面re.findall()或者df.str.extract()(pandas功能);

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。学习正则需要记住两类知识点加上实际案例的联系就能很快的理解和掌握。

正则中语法规范:

括号区别

正则表达式中存在(),[],{}

1、():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的。() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串

例: 

string=‘我正在学习python3的正则表达式,现在的日期是2019-01-22’
目的给定指定字符串进内容进行精准匹配获取python
hiveselect regexp_extract(string,’(python)’,1) 返回结果为:python,1代码返回正则的第几个括号中的内容
pythonre.findall(’(python)’,string)返回结果为:python

2、【】:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.*?!]等,在[]内的字符都是字符,不是元字符,比如“0-9”、“a-z”这中间的“-”就是连接符号,表示范围的元字符,如果写成[-!?*(]这样的话,就是普通字符例:

string=‘我正在学习python3的正则表达式,现在的日期是2019-01-22’
目的给定字符进内容匹配获取python
hiveselect regexp_extract(string,’[a-z]’,0) 返回结果为:python,0代码返回符合正则的内容,如果有小括号可以写1(如'([a-z]+)')
pythonre.findall(’[a-z]+’,string)返回结果为:python
目的给定字符进内容匹配获取日期2019-01-22
hiveselect regexp_extract(string,’([0-9]+.[0-9]+.[0-9]+)’,1) 返回结果为:2019-01-22
pythonre.findall(’[0-9]+.[0-9]+.[0-9]+’,string)返回结果为:2019-01-22
需求增加如果我要只需日期22这个部分
pythonre.findall(’[0-9]+.[0-9]+.([0-9]+)’,string)返回结果为:22,和上面的对比发现在最后一个[0-9]+外面加了一个小括号,有小括号就返回小括号里面的内容

3、{ }一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s{1,3}表示匹配一到三个空格例:

string=‘我正在学习python3的正则表达式,现在的日期是2019-01-22’
目的取出日期数据部分结果为2019,01,22
pythonre.findall(’([0-9]{2,4})’,string) 返回结果为:[2019,01,22],python3中到3是一个数字,所以指定数据个数为2-4的就为日期部分的数字

常用正则表达式

匹配名匹配表达式例子
转义符\“n”匹配字符“n”。"\n"匹配一个换行符。串行"\\"匹配"\"而"\("则匹配"("
开始位置^"abc,bac"匹配b开头的bac[^b]([a-z]{3})
结束位置$"abce,abcd"匹配d结尾字母[a-z]+d$
表达式0次或多次* 
表达式1次或多次+ 
表达式0次或1次 
除\n任意字符. 
单词边界\b“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”
非单词边界\B“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”
换页符\f 
空白行\n\s*\r 
首尾空白字符^\s*\s*$
中文字符[\u4e00-\u9fa5] 
双字节字符(包含汉子在内)[^\x00-\xff] 
数字[0-9]或\d 
非数字\D 
小写字母[a-z] 
大写字母[A-Z] 
大小写字母[a-zA-Z] 
英文加数字a-z0-9 

来源:https://blog.csdn.net/weixin_43917430/article/details/108935233

标签:python,正则表达式,括号
0
投稿

猜你喜欢

  • asp.net 上传下载输出二进制流实现代码

    2023-06-28 16:06:05
  • 初学者快看,Python下划线的五个作用介绍

    2023-03-03 18:23:40
  • SpringBoot整合Mybatis使用Druid数据库连接池

    2024-01-28 23:33:21
  • python scipy.spatial.distance 距离计算函数  

    2023-01-25 08:55:23
  • MySQL错误Forcing close of thread的两种解决方法

    2024-01-25 15:24:44
  • python识别围棋定位棋盘位置

    2023-01-09 01:49:34
  • Python手写回归树的实现

    2021-08-26 23:03:56
  • Go语言的互斥锁的详细使用

    2024-03-11 04:04:30
  • 详解JavaScript中操作符和表达式

    2024-06-17 21:14:30
  • GoLang基础学习之go test测试

    2024-02-06 16:28:19
  • layui使用button按钮 点击出现弹层 弹层中加载表单的实例

    2024-05-02 17:22:15
  • Python遍历指定文件及文件夹的方法

    2023-04-07 23:10:17
  • Python全栈之路正则函数

    2022-03-19 05:03:51
  • 使用python scrapy爬取天气并导出csv文件

    2023-02-25 16:16:10
  • SQL数据类型详解

    2024-01-13 02:01:30
  • 浅析MySQL内存的使用说明(全局缓存+线程缓存)

    2024-01-26 02:46:20
  • Python如何实现动态数组

    2022-11-24 04:44:02
  • python函数参数(必须参数、可变参数、关键字参数)

    2023-09-17 07:54:28
  • Python爬虫爬取杭州24时温度并展示操作示例

    2022-01-04 14:43:33
  • 使用python的pyplot绘制函数实例

    2021-07-27 01:21:30
  • asp之家 网络编程 m.aspxhome.com