[Python]几个正则表达式匹配的例子

例一、匹配以abc开头的单词。

text = "abcthis is thatabc colvin"
pat = r"\b(?=abc)\w*"
print re.findall(pat,text)
>>>

['abcthis']

例二、匹配不是以abc开头的单词。

text = "abcthis is thatabc colvin"
pat2 = r"\b(?!abc)\w+"
print re.findall(pat2,text)
>>>

['is', 'thatabc', 'colvin']

text = "abcthis is thatabc colvin"
pat3 = r"(?<!\w)(?=\w)(?!abc)\w+"
print re.findall(pat3,text)
>>>

['is', 'thatabc', 'colvin']

print re.findall(r"\b[^\Wa][^\Wb]?[^\Wc]?\w*\b","abcthis is abcthat colvin")
>>>

['is', 'colvin']

def getpat(str):
    pat = r"".join(["[^\W"+y+"]"+"?"*(x>0) for x,y in enumerate(str)])
    pat = r"\b"+pat+r"\w*\b"
    return pat

pat = getpat("abc")
print re.findall(pat,text)
>>>

['is', 'thatabc', 'colvin']

例三、匹配不包含abc的单词。

text = "abcthis is thatabc colvin"
pat4 = r"\b(((?!abc)\w)+)\b"
print re.findall(pat4,text)
>>>

[('is', 's'), ('colvin', 'n')]

例四、对字符串中的数值每3位添加一个小数点

13324323  =>  13.324.323  

This is 1965th    =>  This is 1965th

333   =>  333

print re.sub(r'(?<=\d)(?=(\d\d\d)+\b)', '.', str('435453454534'))
>>>

435.453.454.534



 




### 正则表达式匹配算法概述 Python 中的正则表达式(Regular Expressions,简称 RE 或 regex)是一种强大的工具,用于字符串模式匹配和操作。通过 `re` 模块,可以实现复杂的字符串处理任务,例如验证电子邮件地址、提取电话号码或其他特定格式的数据[^2]。 #### 基本概念 正则表达式本质上是一个小型编程语言,嵌入在 Python 中并通过 `re` 模块提供支持。它允许定义一组可能匹配的字符串规则,并执行诸如“此字符串是否符合该模式?”或“在此字符串中是否存在任何位置与此模式匹配?”等问题的查询[^1]。 以下是几个常见的正则表达式元字符及其功能: - `\d`: 匹配任意十进制数字(0-9)。 - `\w`: 匹配字母、数字或下划线(相当于 `[a-zA-Z0-9_]`)。 - `.`: 匹配除换行符外的任意单个字符。 - `*`: 表示前面的元素可重复零次或多次。 - `+`: 表示前面的元素至少出现一次。 - `{m,n}`: 表示前面的元素最少出现 m 次,最多 n 次。 #### 使用示例 下面是一些简单的例子来展示如何使用正则表达式: ```python import re # 查找所有匹配的子串 pattern = r'\d+' # 匹配一个或多个连续的数字 text = "There are 12 apples and 34 oranges." matches = re.findall(pattern, text) print(matches) # 输出 ['12', '34'] # 替换匹配的部分 new_text = re.sub(r'\d+', 'NUMBER', text) print(new_text) # 输出 "There are NUMBER apples and NUMBER oranges." # 判断整个字符串是否完全匹配给定模式 if re.fullmatch(r'[A-Za-z]+', "Hello"): print("Matched!") # 输出 Matched! # 编译正则表达式以便重用 compiled_pattern = re.compile(r'hello') result = compiled_pattern.search('say hello world!') if result: print(result.group()) # 输出 hello ``` 以上代码展示了四种基本的操作方式:查找所有匹配项 (`findall`)、替换匹配部分 (`sub`)、判断整体匹配情况 (`fullmatch`) 和编译正则表达式以提高性能 (`compile`)。 #### 高级应用 除了基础的功能之外,还可以利用捕获组 `( )` 来获取更精确的信息片段;或者结合条件语句完成更加灵活的任务。比如,在自然语言处理领域里,可以通过编写合适的正则表达式来进行情感分析前的数据预处理工作[^4]。 ### 注意事项 当版本更新至 Pandas 2.0 后需要注意某些旧函数已被弃用的情况,像原本使用的 `.pad()` 方法已经被建议改用 `.ffill()` 取代[^5]。虽然这主要涉及数据填充而非正则表达式的范畴,但在实际项目开发过程中保持对库最新变动的关注总是有益无害的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值