一文入门re 正则表达式

一、常用方法

(一)匹配

一般使用方法
第一个参数:正则模式
第二个参数:需要处理的字符串
第三个参数:附加处理方法

result从任意位置开始匹配,返回match,没有匹配到返回None
result = re.search(r"abc","1bcabcdbcd",re.I)
print(result,type(result),result.start(),result.end(),result.group())

findall以列表的形式返回所有匹配到的字符串
result = re.findall(r"abc","abcabcdAbcde")
print(result)

 

match从第一个字符开始匹配,如果第一个字符不匹配,就返回None
result = re.match(r"abc","1bcabcdAbcde")
print(result)   # None
fullmatch匹配整个字符串,返回match或None
result = re.fullmatch(r"1\w+e","1bcabcdAbcde")
print(result)

 

finditer返回迭代器,每一个元素都是Match
result = re.finditer(r"abc","abcabcdAbcde")
for data in result:
    print(data.group())

 

(二)替换

一般使用方法

第一个参数:正则模式 第二个参数:替换成的内容 第三个参数:需要替换的字符串 第四个参数:替换次数 第五个参数:附加标识

sub把所有匹配成功的都进行替换,返回替换过后的字符串

result = re.sub(r"abc","星星","abcabcdAbcde")
print(result)

 

subn元组形式返回替换过的字符串和替换次数
result = re.subn(r"abc","星星","abcabcdAbcde")
print(result)

 

(三)切割

第一个参数是正则模式 第二个参数是需要切割的字符串 第三个参数是最大切割次数

split返回切割之后的内容

result = re.split(r"abc","abcabcdAbcde")
print(result)

二、特殊字符

# \w 匹配数字 字母 下划线
# result = re.findall(r"\w","abc123+_*?-")
# print(result)
# \W 匹配非数字 字母 下划线
# result = re.findall(r"\W","abc123+_*?-")
# print(result)


# \d 匹配数字
# result = re.findall(r"\d","abc123+_*?-")
# print(result)
# \D 匹配非数字
# result = re.findall(r"\D","abc123+_*?-")
# print(result)


# \S匹配 空白
# result = re.findall(r"\s","a bc123+_*?-\t\n")
# print(result)
# \S匹配 非空白
# result = re.findall(r"\S","a bc123+_*?-\t\n")
# print(result)

# . 除了\n不匹配,其他都匹配
# result = re.findall(r".","ac +-*/ .46\t)\n")
# print(result)
# . 加上re.S后匹配所有
# result = re.findall(r".","ac +-*/ .46\t)\n",re.S)
# print(result)

# ^ 开头
# result = re.findall(r"^a","ac +-*/\nab .46\t)")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r"^a","ac +-*/\nab .46\t)",re.M)
# print(result)

# $ 结尾
# result = re.findall(r" $","ca +-*/\nba .46\t ")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r" $","ca +-*/ \nba .46\t ",re.M)
# print(result)


# 贪婪:尽可能匹配多个
# * 代表有>=0个
# + 代表有>=1个
# ? 代表有1个或者0个
# result = re.findall(r"\d*","123456789")
# print(result)
# result = re.findall(r"\d+","123456789")
# print(result)
# result = re.findall(r"\d?","123456789")
# print(result)

# 非贪婪:尽可能匹配少个数
# 在贪婪模式后追加一个?
# result = re.findall(r"\d*?","123456789")
# print(result)
# result = re.findall(r"\d+?","123456789")
# print(result)
# result = re.findall(r"\d??","123456789")
# print(result)


# {n}匹配n次
result = re.findall(r"\d{2}","123456789")
print(result)
# {m,n}匹配m-n次
result = re.findall(r"\d{2,4}","123456789")
print(result)
# {m,n}? 非贪婪匹配
result = re.findall(r"\d{2,4}?","123456789")
print(result)
# []匹配其中一个
result = re.findall(r"[1-9a-z]","123456789abcdfaz")
print(result)
# |或者
result = re.findall(r"[1-9]|[a-z]","123456789abcdfaz")
print(result)
# ()分组
result = re.findall(r"(.*?)","123456789abcdfaz")
print(result)

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QRegExp是Qt框架中的一个类,用于进行正则表达式的匹配和处理。它提供了多种模式来匹配不同的字符串。其中,QRegExp::RegExp模式提供了一个简单的模式匹配语法,类似于shell的通配符,可以使用字符“\”进行转义。QRegExp::Wildcard模式类似于通配符,但具有Unix shell的行为。QRegExp::FixedString模式是一个固定字符串,相当于在字符串上使用RegExp模式,其中所有元字符都使用escape()进行转义。QRegExp::W3CXmlSchema11模式是由W3C XML架构1.1规范定义的正则表达式。\[1\] 在使用编辑框输入内容时,可以使用QRegExp类的正则表达式来限制用户输入的内容,以避免输入无关信息和防止SQL注入。QRegExp类的正则表达式可以对编辑框的输入内容进行限制和匹配。\[2\] 如果想要匹配特定的单词,可以使用括号将单词组合在一起,例如(mail|letter)。为了强制匹配的开始和结束都在单词的边界上,可以将正则表达式包含在\b单词边界断言中,即\b(mail|letter)\b。这个\b断言在正则表达式中匹配一个位置,而不是一个字符,一个单词的边界是任何的非单词字符,如一个空格、新行,或者一个字符串的开始或结束。\[3\] #### 引用[.reference_title] - *1* [QRegExp(正则表达式)](https://blog.csdn.net/qq_45303986/article/details/127871375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【QT学习】QRegExp类正则表达式一文读懂)](https://blog.csdn.net/qq_59134387/article/details/127182436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt QRegExp 正则表达式](https://blog.csdn.net/m0_73443478/article/details/128483562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值