如何用正则表达式匹配指定字符开始和指定字符结束?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用正则表达式匹配指定字符开始和指定字符结束?相关的知识,希望对你有一定的参考价值。
a.*?b就是a开始b结束的匹配。
1,正则匹配指定字符开始和指定字符结束,如以a开始结束的正则表达式为:a.*?b ,即以a开始b结束的字符可能被匹配。
2,将dedecms批量改动太的sql语句记下来,伪静太或动态页面的时候很有用。
3,进入后台→系统→SQL命令行工具→运行SQL命令行: 单行命令执行查询命令:将所有文档设置为“仅动态”:update dede_archives set ismake=-1。将所有文档设置为“仅静态”:update dede_archives set ismake=1。将所有栏目设置为“使用动态页”: update dede_arctype set isdefault=-1。将所有栏目设置为“使用静态页”: update dede_arctype set isdefault=1。
参考技术A 天用dedecms写采集规则的时候发现一不小心,把大量无用的字符也采集下来了,重写规则重新集采是不太可能的了,那么多的数据,好再dedecms功能很强大,即使采集下来后也可用替换功能将无用字符给替换掉,于是有了今天的问题。正则匹配指定字符开始和指定字符结束,如以a开始结束的正则表达式为:a.*?b ,即以a开始b结束的字符可能被匹配。顺便将dedecms批量改动太的sql语句记下来,伪静太或动态页面的时候很有用。进入后台→系统→SQL命令行工具→运行SQL命令行: 单行命令执行查询命令:
1.将所有文档设置为“仅动态”:update dede_archives set ismake=-1
2.将所有文档设置为“仅静态”:update dede_archives set ismake=1
3.将所有栏目设置为“使用动态页”: update dede_arctype set isdefault=-1
4.将所有栏目设置为“使用静态页”: update dede_arctype set isdefault=1
python通过正则匹配指定字符开头与结束提取中间内容
一、提取包含始末字符
1、起始字符串固定
a = re.findall('起始字符串.*结束字符串',str)
2、起始字符串不固定(即从首字符串提取到固定的字符串结束),用^指定从首字符串开始
a = re.findall('^.*结束字符串',str)
二、不包含始末字符串
#方法1
a = re.findall('(?<=始字符串).*?(?=末字符串)',str)
#方法2
a = re.findall('始字符串(.*?)末字符串',str)
- 在 re.findall()的方法中 '始字符串.末字符串’ 可以匹配到相同的值直到最后一个值;如果参数为 '始字符串.?末字符串’则只匹配到第一个值。
- 其实使用.*和.+都能提取特定始末字符串中间的内容,下面顺便说下两者的区别。
三、.*和.+正则提取的区别
.:匹配任意字符
*:匹配0个或多个字符
?:非贪婪模式,在符合的条件下,尽可能少的匹配(尽可能短的匹配)
str2 = "aabab"
a = re.findall('a.*?b',str2) #结果:['aab', 'ab']
b = re.findall('a.+?b',str2) #结果:['aab']
.?:匹配aab和ab ,因为可以匹配0个字符,所以可以匹配得到ab
.+?:匹配aab,因为+必须a和b中间至少有一个字符,所以排除了ab
四、起始有无^的区别
str2 = "aabab"
c = re.findall('.*',str2) #结果:['aabab', '']
d = re.findall('^.*',str2) #结果:['aabab']
五、pandas对具体列的内容通过正则表达式进行数据提取
- 使用前要确保该列的类型统一,str或者float格式,最好事先通过astype强制转换一下
- df[‘新列名’]=df[‘提取的列名’].str.extract(‘正则表达式’, expand = True)
六、遇到的报错
报错:pattern contains no capture groups
(翻译:模式不包含捕获组)
解决:根据docs ,您需要为 str.extract 指定一个捕获组(即括号)好,提取。
参考文章:https://www.cnblogs.com/ZhangHT97/p/13427325.html
https://www.cnblogs.com/YouJeffrey/p/15209895.html
https://blog.csdn.net/dudu3332/article/details/111555572
以上是关于如何用正则表达式匹配指定字符开始和指定字符结束?的主要内容,如果未能解决你的问题,请参考以下文章