Python中常用的 正则

200 篇文章 8 订阅
想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则:
(.*)
结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才发现正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符。

以下为正确的正则表达式匹配规则:
([\s\S]*)   eg:
m1 = re.findall(r'<!\[CDATA\[select([\s\S]*?)\]\]></Query', source_txt)    ps: ? 添加才能有多次匹配,不然只会匹配一次

ps: ( ) 代表被捕获

eg: 获取

“and r.date >= '2024-01-01'

and sd.begin_date <= '2024-08-06'” 中的 r 和 sd

就这么写:

r'\band\s+(\w+)\.'

解释:

  • \b:表示单词边界,确保匹配的字符串是独立的单词,而不是其他单词的一部分。

  • and:字面字符串 “and”。

  • \s+:匹配一个或多个空白字符(空格、制表符、换行符等)。

  • (\w+)

    • ( 开始一个捕获组。
    • \w 匹配任何单词字符(字母、数字或下划线)。
    • + 表示一个或多个前面的元素,所以 \w+ 匹配一个或多个单词字符。
    • ) 结束捕获组。
  • \.:匹配字面字符点(.)。在正则表达式中,点通常用于匹配任意字符,但在这里它被转义(\),所以它只匹配字面上的点字符。

同时,也可以用 “([\d\D]*)”、“([\w\W]*)” 来表示。 Web技术之家_www.waweb.cn

在文本文件里, 这个表达式可以匹配所有的英文
/[ -~]/

#正则匹配一段文字中的所有中文
import re
string = 'aaddaweh大大的无ausdy五千股qeas华盛顿哈刚过去而过千万股ads'
result = re.findall(u"[\u4e00-\u9fa5]+",string)
print(result)

# b = re.compile(u"\|[\u4e00-\u9fa5]*\|")
# c = b.findall(string)
# print(c)

Python中正则:

.      所有字符,包括数字、汉字、空格,即除了 \n 换行符之外

\d     所有数字,PS:如果数字中包含小数点,[\d\.]+

+     控制其前边的匹配次数,+ 只能出现 1次或多次,eg:zo+ 匹配到 zo 和 zoo,不能匹配 z;也可写为:{1,}

*      控制其前边的匹配次数,* 只能出现 0次或多次,eg:zo* 匹配到 z 和 zo 和 zoo ;也可写为:{0,}

?       控制其前边的匹配次数,? 只能出现 0次 或 1次,eg:zo+  匹配到 z 和 zo ,但不能匹配 zoo ;也可写为:{0,1}

{m,n}    控制其前边的匹配次数;最少匹配 m 次,最多 n 次; m<n

+? 或 *? 或 ??     非贪婪匹配,匹配到 立马结束,不会再往后继续匹配

|    起到连接作用,连接两个表达式,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值