首页 » 网站推广 » php匹配取值技巧_python 编程正则表达式

php匹配取值技巧_python 编程正则表达式

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

【有什么浸染】:实现快速检索文本,或实现更换文本的操作。

实战:查看字符串是否包含python

php匹配取值技巧_python 编程正则表达式 php匹配取值技巧_python 编程正则表达式 网站推广

findal查找全部re.findall(须要匹配的内容, 查找的字符串)

a = "C|Java|C#|python|PHP|JS"# 方法一print(a.index("python"))# 方法二import rer = re.findall("python", a)if len(r) != 0: print("字符串中包含python")输出:10字符串中包含python

php匹配取值技巧_python 编程正则表达式 php匹配取值技巧_python 编程正则表达式 网站推广
(图片来自网络侵删)
(2) 元字符与普通字符

实战:在字符串中把所有的数字提取出来

‘python’ 是普通字符‘\d’ 是元字符,表示数字:0-9 ,代表一定的意义'\D' 表示‘\d’的相反,不是0-9

a = "C123Java321C#455python1321PHP1243JS"import rer = re.findall("\d", a)print(r)r = re.findall("\D", a)print(r)输出:['1', '2', '3', '3', '2', '1', '4', '5', '5', '1', '3', '2', '1', '1', '2', '4', '3']['C', 'J', 'a', 'v', 'a', 'C', '#', 'p', 'y', 't', 'h', 'o', 'n', 'P', 'H', 'P', 'J', 'S']

(3) 字符集

实战:查找中间单词是 c,或者 f 的字符集

[] 可以抽象字符集,可以抽象c或者f,借助普通字符a和c来进行定界^ 表示否的意思 - 表示顺序,匹配 a 到 f 的字符

import rea = "abc,acc,afc,adc,arc"r1 = re.findall("a[cf]c", a)r2 = re.findall("a[^cf]c", a)r3 = re.findall("a[c-f]c", a)print(r1)print(r2)print(r3)输出:['acc', 'afc']['abc', 'adc', 'arc']['acc', 'afc', 'adc']

(4) 元字符还有什么

\w : 表示字母 a-z、A-Z 和数字0-9 和 _

import rea = "a bc!acc$afc@adc!arc_"r1 = re.findall("\w", a)r2 = re.findall("\W", a)print(r1)print(r2)输出:['a', 'b', 'c', 'a', 'c', 'c', 'a', 'f', 'c', 'a', 'd', 'c', 'a', 'r', 'c', '_'][' ', '!', '$', '@', '!']

\s : 表示空缺字符

import rea = "a bc!acc$afc@adc!arc_"r1 = re.findall("\s", a)r2 = re.findall("\S", a)print(r1)print(r2)输出:[' ']['a', 'b', 'c', '!', 'a', 'c', 'c', '$', 'a', 'f', 'c', '@', 'a', 'd', 'c', '!', 'a', 'r', 'c', '_']

. :表示除换行符之外的所有字符

(5) 数量词

实战:把python匹配出来

表示重复的字符集,可以用数字表示{} 里面写的数字,表示重复几次

import rea = "c123java321C#455python1321php1243JS"r1 = re.findall("[a-z][a-z][a-z][a-z][a-z][a-z]", a)r2 = re.findall("[a-z]{6}", a)print(r1)print(r2)输出:['python']['python']

实战:把 python,java,php 匹配出来

{} 里面写的数字,可以写有多少到多少的数字

import rea = "c123java321C#455python1321php1243JS"r1 = re.findall("[a-z]{3,6}", a)print(r1)输出:['java', 'python', 'php']

(6) 贪婪与非贪婪

默认情形,python是贪婪模式,匹配最多的得当的数量。

? :在数字范围后表示非贪婪

实战: 获取3个字母

import rea = "c123java321C#455python1321php1243JS"r1 = re.findall("[a-z]{3,6}?", a)r2 = re.findall("[a-z]{3}", a)print(r1)print(r2)输出:['jav', 'pyt', 'hon', 'php']['jav', 'pyt', 'hon', 'php']

(7) 匹配0次1次或者无限多次

表示匹配前面的字符0次或者多次

+表示匹配前面的字符1次或者多次

?表示匹配前面的字符0次或者1次,可以做去除的操作

import rea = "pytho0python1pythonn2pythonnn333"r1 = re.findall("python", a)r2 = re.findall("python+", a)r3 = re.findall("python?", a)r4 = re.findall("python{1,3}?", a) # 表示非贪婪模式print(r1)print(r2)print(r3)print(r4)输出:['pytho', 'python', 'pythonn', 'pythonnn']['python', 'pythonn', 'pythonnn']['pytho', 'python', 'python', 'python']['python', 'python', 'python']

(8) 边界匹配符

实战: 验证位数是否符合

^ 表示从字符串前面开始匹配$ 表示从字符串后面开始匹配

import rea = "100086"r1 = re.findall("\d{3,5}", a)r2 = re.findall("^\d{3,5}$", a)print(r1)print(r2)输出:['10008'][]

import rea = "100086"r1 = re.findall("086$", a)r2 = re.findall("^1000", a)r3 = re.findall("000$", a)r4 = re.findall("^000", a)print(r1)print(r2)print(r3)print(r4)输出:['086']['1000'][][]

(9) 组

判断字符串中是否包含 2个python

python{3} : 表示单个n重复3次() :表示组,可以有多个组(python){3}表示一组的单词,重复3次[] 是或者的关系,()是且的关系

import rea = "pythonpython2pythonpython2nvvpythonpythonn"r1 = re.findall("(python){2}", a)r2 = re.findall("(python){2}(2)", a)print(r1)print(r2)输出:['python', 'python', 'python'][('python', '2'), ('python', '2')]

(10) 匹配模式参数

flags=re.I : 表示不区分大小写

| : 连接多个模式,且

import rea = "pc#ythonpython2pythonpython2nvvpythonpythonn"r1 = re.findall("C#", a,flags=re.I) print(r1)输出:['c#']

re.S : 表示 .匹配所有字符,包括换行符

import rea = "pc#\nythonpython2pythonpython2nvvpythonpythonn"r1 = re.findall("C#.{1}", a, flags=re.I | re.S)print(r1)输出:['c#\n']

(11) re.sub正则更换

re.sub("正则匹配规则",“须要换成的字符串”,“查找的字符串”,count=0,flag)

实战 : c# 换成 python

import rea = "c#phpc#javac#"r1 = re.sub("c#", "python", a)输出:pythonphppythonjavapython

count=0 :默认是0,所能被更换的最大选项

import rea = "c#phpc#javac#"r1 = re.sub("c#", "python", a,count=1)输出:pythonphpc#javac#

内置函数 replace 同样可以实现更换

a = "c#phpc#javac#"print(a.replace("c#", "python"))输出:pythonphppythonjavapython

(12) 把函数作为参数通报

sub第二个参数,可以吸收函数。

根据不同的匹配结果做不同的操作。

import redef conver(value): print(value) matched = value.group() print(matched) return "111" + matched + "111"a = "c#phpc#javac#"r1 = re.sub("c#", conver, a)print(r1)输出:<re.Match object; span=(0, 2), match='c#'>c#<re.Match object; span=(5, 7), match='c#'>c#<re.Match object; span=(11, 13), match='c#'>c#111c#111php111c#111java111c#111

实战:匹配字符串,数字大于60变成9,否则变成0

import redef conver(value): matched = value.group() if int(matched) >= 60: return "9" else: return "0"a = "ABC123987456DE"r1 = re.sub("\d{2}", conver, a)print(r1)输出:ABC00906DE

(13) search与match函数搜索到了一个,就停滞搜索返回结果都是组match 从字符串首字母开始匹配search 搜索字符串,直到找到知足条件的字符串

a = "1490ABC123987456DE"r1 = re.match("\d", a) #从字符串首字母开始匹配 print(r1.group())r2 = re.search("\d", a) #搜索字符串,直到找到知足条件的字符串print(r2.group())print(r2.span()) # 返回位置输出:11(0, 1)

(14) group分组

实战:获取 A 和 E 中间的字符

0 是默认取值 ,获取完全匹配结果。

a = "A 14956 63E234234E"r1 = re.match("A(.)E", a)print(r1.group(1)) 1 是第一个组r1 = re.match("A(.)E(.)E", a) # 可以有很多个组print(r1.group(0, 1, 2))print(r1.groups()) # 把匹配到的内容输出print(re.findall("A(.)E(.)E", a))输出: 14956 63E234234('A 14956 63E234234E', ' 14956 63', '234234')(' 14956 63', '234234')[(' 14956 63', '234234')]

(15) JSON

【Json】 是一种轻量级的数据交流格式。

【JSON字符串】:符合json格式的字符串

字符串是json的一种表现形式。

【上风】:易于阅读,解析,网络传输效率高。
跨措辞交流数据。

(16)序列化与反序列化

【反序列化】json.loads()

json字符串须要用双引号。

实战:json字符串转换python的字典

import jsonj_str = '{"name":"CiCi","age":18}'print(type(json.loads(j_str)))输出:<class 'dict'>

json字符串的 true 和 false是小写开头的。

json字符串的 null 是 None。

import jsonj_str = '[{"name":"CiCi","flag":true},{"name":"CiCi","flag":false}]' print(json.loads(j_str))输出:[{'name': 'CiCi', 'flag': True}, {'name': 'CiCi', 'flag': False}]

【序列化】json.dumps()

import jsondict_p = {"name": "CiCi", "flag": True}print(json.dumps(dict_p))输出:{"name": "CiCi", "flag": true}

标签:

相关文章

住宅设计网站,打造理想家园的智慧助手

随着科技的飞速发展,互联网已经渗透到我们生活的方方面面。在住宅设计领域,住宅设计网站应运而生,成为越来越多家庭打造理想家园的智慧助...

网站推广 2024-12-05 阅读0 评论0