Python之正则表达式与JSON

1、定义

正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配。

可以快速检索文本,实现一些替换文本的操作

a = ‘C|C++|C#|Python|Javascript’
print(a.index('Python')> -1)
print('Pythin' in a)
import re
a = ‘C|C++|C#|Python|Javascript’
r = re.findall('Python', a)     #返回一个列表
if len(r) > 0:print("字符串中包含Pyython")
import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\d',a)    #正则表达式中用“\d”统配数字
print(a)

'Python’普通字符 ‘\d’元字符

import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\D',a)    #正则表达式中用“\D”匹配所有的非数字
print(a)

字符集

import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[cf]c',s)    #匹配出acf或afc
print(r)
import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[^cf]c',s)    #匹配出非acf和非afc
print(r)
import re
a = 'abc,acc,adc,aec,afc,ahc'
r = re.findall('a[c-f]c',s)    #匹配出a[c,d,e,f]c
print(r)

概况字符集

import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\d',a)    #正则表达式中用“\d”统配数字
print(a)import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('[0-9]',a)    #正则表达式中用“\d”统配数字等价于[0-9]
print(a)
import re
a = ‘C0C++4C#6Python1Javascript’
r = re.findall('\w',a)    #正则表达式中用“\w”匹配所有的数字字母
print(a)
"\w" 单词字符集,可以匹配大小写字母,数字和_     等价于[A-Za-z0-9_]
“\W” 非单词字符集 &
“\s” 空白字符 包括空格,\t,\n,\r
“\S”  匹配非空白字符
. 匹配除\n以外的所有字符

数量词

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3}',a)    #匹配连续的a-z的三个字符
print(r)import re
a ='python 1111java678php'
r = re.findall('[a-z]{3,6}',a)    #匹配连续的a-z的3到6个字符
print(r)

贪婪与非贪婪 尽可能匹配最大值

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3}',a)    #匹配连续的a-z的三个字符
print(r)结果:
['python','java','php']     由于贪婪

非贪婪模式,大括号后加?

import re
a ='python 1111java678php'
r = re.findall('[a-z]{3,6}?',a)    #非贪婪模式匹配
print(r)结果:
['pyt’,hon','jav','php']     #由于非贪婪只匹配3个字符
*  匹配*前面的字符0次或无数次
+  匹配*前面的字符1次或无数次
? 匹配*前面的字符0次或1次

边界匹配

import re
a = '100001'
r = re.findall('\d{4,8}',qq)   #匹配4到8位数字
print(r)import re
a = '100001'
r = re.findall(^'\d{4,8}$',qq)   #边界匹配
print(r)import re
a = '10000000001'
r = re.findall(^'000$',qq)   #边界匹配
print(r)
import re
a = 'PythonPythonPythonPythonPythonPython'
r = re.findall('(Python){3}',a)
print(r)
import re
lanuage = 'PythonC#JavaPHP'
r = re.findall(‘c#.{1}’,lanuage,re.I |re.S)
print(r)re.I 忽略大小写   re.S 改变.的功能

re.sub

import re
lanuage = 'PythonC#JavaPHP'
r = re.sub(‘C#’,'GO',lanuage,1)
print(r)
# r = re.sub(‘需要被替换的字符’,‘替换后的字符',lanuage,被替换的次数(1表示1次,0表示无数次))
import re
lanuage = 'PythonC#JavaPHP'
r = lanuage.replace(‘C#’,'GO')
print(r)
import re
lanuage = 'PythonC#JavaPHP'
def convert(value):pass
# 先匹配C#,将c#作为参数传给convert()函数,再将返回值用于替换C#
r = re.sub(‘C#’,convert,lanuage)
print(r)
import re
lanuage = 'PythonC#JavaPHP'
def convert(value):pass
# 先匹配C#,将c#作为参数传给convert()函数,再将返回值(对象)用于替换C#
r = re.sub(‘C#’,convert,lanuage)
print(r)
import re
s = 'ABC3721D86'
def convert(value):matched = value.group()if int(matched) >= 6:return '9'else:return '0'
r = re.sub('\d',convert,s)
print(r)
import re
s = 'ABC3721D86'
r = re.match('\d',s)
#从字符串首字母开始匹配,第一个字符不符合,则返回空
print(r)
r1 = re.search('\d',s)
# 搜索整个字符串,首字母对匹配不影响
print(r1)
# 他们都只匹配一次

group()函数

span()函数

# 获取life和python中间的内容
import re
s = 'life is short,i use python'
r = re.search('life.*python',s)
print(r.gruop())
group(0)默认返回完整匹配结果,要通过组号访问,需要从group(1)开始
import re
s = 'life is short,i use python, i love python'
r = re.search('life(.*)python(.*)python',s)
print(r.gruop(0))
print(r.gruop(1))
print(r.gruop(2))
# print(r.group(0,1,2))
print(r.groups())    #只会返回之间的字符串

JSON

javascript 对象标记

是一种轻量级的数据交换格式

JSON字符串,符合json格式的字符串

优点:易于阅读解析网络传输效率高,跨语言交换数据

json的载体,json字符串

import json
# json_str = "{'name':'qiyue','age':18}"    #错误,json字符串规定用“”json_str = '{"name":"qiyue","age":18}'    #json object
student = json.loads(json_str)
print(type(student))
print(student)
print(student['name'])
print(student['age'])
import jsonjson_str = '{"name":"qiyue","age":18,"flag":false},{"name":"qiyue","age":18}'
student = json.loads(json_str)
print(type(student))
print(student)
从字符串到语言的数据类型的转换,反序列化序列化
import json
studeht = [{"name":"qiyue","age":18,"flag":false},{"name":"qiyue","age":18}]
json_str = json.dumps(student)
print(json_str)
json        python
object      dict
array       list
string      str
json对象 json   json字符串
javascript    ECMSCRIPT规范和标准的实现

Python之正则表达式与JSON相关推荐

  1. Python(八) 正则表达式与JSON

    一.初识正则表达式 正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配 快速检索文本.实现替换文本的操作 json(xml) 轻量级 web 数据交换格式 impor ...

  2. 【Python之正则表达式与JSON】

  3. 正则 指定开头结尾_Python核心知识系列:正则表达式与JSON

    1 正则表达式必知必会 1.1 简介 正则表达式:是一些用来匹配和处理文本的字符串. 正则表达式的使用场景主要以下两种情况:一是查找特定的信息(搜索),二是查找并编辑特定的信息(替换). 用模式(pa ...

  4. JSON java 正则_9、正则表达式与JSON

    正则表达式:一个特殊的字符序列,可以帮助检测一个字符串是否与我们所设定的字符序列相匹配. 功能:可以实现快速检索文本.替换文本的操作. 检测一串数字是否是电话号码 检测一个字符串是否符合e-mail格 ...

  5. 正则表达式与JSON

    正则表达式与JSON 一.初识正则表达式 # 正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配 # 快速检索文本.实现一些替换文本的操作 # 1.检查一串数字是否室电 ...

  6. 10. 正则表达式与JSON

    正则表达式 正则表达式是一个特殊的字符序列,是对字符串的逻辑操作,主要是对字符串的一种过滤,用"元字符"与"普通字符"组成一个字符串规则对已知的字符串或文本过滤 ...

  7. 第十章、正则表达式和JSON

    第十章.正则表达式和JSON 文章目录 第十章.正则表达式和JSON 一.正则表达式 二.JSON 一.正则表达式 正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配, ...

  8. Python3进阶--正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、datetime

    第一章 变量.常用循环体.代码结构.代码练习 第二章 列表.元组等数据结构.字符串驻留机制及字符串格式化操作 第三章 函数.面向对象.文件操作.深浅拷贝.模块.异常及捕获 第四章 项目打包.类和对象高 ...

  9. JavaScript 正则表达式 处理json,json对象的遍历和处理

    //********* https://www.runoob.com/js/js-regexp.html ****// 正则表达式.exec( ) new RegExp("\\{" ...

最新文章

  1. elk-nginx输出json格式的日志
  2. java的源代码文件扩展名_【单选题】Java 的源代码文件具有( )的扩展名 (5.0分) A. .c B. .class C...
  3. oracle绑定主键,oracle添加主键的四种方法:
  4. boost::exception_test::throw_test_exception<T>的测试程序
  5. HDU 5536 Chip Factory 字典树+贪心
  6. java桌面应用程序打包为exe
  7. [GXOI/GZOI2019]旧词——树链剖分+线段树
  8. pythonflask configlist.py_Python+Flask.0004.FLASK配置管理之三种方式加载外部配置
  9. Java面试——线程池
  10. 手机屏大字滚动_LG 滑动伸缩手机专利公布
  11. (筆記) Continuous Assignment的幾個特色 (SOC) (Verilog)
  12. ip=request.servervariables(Remote_Addr)获得ip显示::1
  13. SciPy教程 - 常数constants和特殊函数库special
  14. [导入][转] Eclipse中的快捷键
  15. Shell脚本 批量修改目录下若干文件名
  16. python怎么改错误代码_【新人求助】py大神们求看,一段简单代码出错,不知道如何修改...
  17. 软件项目与产品的区别与联系_软件产品和软件过程之间的区别和关系
  18. 图书管理系统c语言ns图,图书管理系统流程图.doc
  19. cuda安装及百度云链接
  20. html5语文答题制作,语文万能答题模板

热门文章

  1. 奶爸日记24 白砂糖
  2. 【Web开发】Python实现Web服务器(Ubuntu下Flask使用MySQL数据库)
  3. 个人目标:计算机学生如何实现经济独立(分享)
  4. SDCC 2016架构运维技术峰会(成都站)启动,首批讲师披露
  5. Adobe年底推出Creative Suite 3?
  6. 各种不等式的解法收集【初级辅导和中级辅导】
  7. LibXL库使用详解
  8. Genesis公链确定亮相Consensus 2022大会
  9. [高频面试题]64匹马,8个赛道,找出跑得最快的4匹马
  10. Java唐诗学习系统