Python正则表达式示例
正则表达式的完整形式是正则表达式。它是任何编程语言的一个重要特性。它是一个字符串模式,用于匹配、搜索或替换字符串值中的字符串。regex模式可以在Python脚本中使用Python的" re "模块。这个模块有许多类型的函数来执行不同的字符串操作。使用不同的元字符和特殊序列来定义搜索或替换任务的正则表达式模式。本教程展示了在Python脚本中使用一些常用的元字符、特殊序列和正则表达式方法的目的。
regex中一些常用的元字符:
字符 | 目的 |
“+” | 它用于匹配字符串中某个特定字符的一次或多次出现。 |
‘*’ | 它用于匹配字符串中某个特定字符的零次或多次出现。 |
‘?” | 它用于匹配字符串中出现零次或一次的特定字符。 |
“^” | 它用于匹配字符串开头的特定字符或字符串。 |
“美元” | 它用于匹配字符串末尾的特定字符或字符串。 |
“|” | 它用于匹配字符串中的多个字符串中的任何一个。它像OR逻辑一样工作。 |
“[]” | 它用于匹配一系列字符。 |
“{}” | 它用于匹配特定数量的字符。 |
regex中一些常用的特殊序列:
序列 | 目的 |
' ' | 它用于匹配字符串开头的特定字符。它的工作原理类似于“^”字符。 |
' b ', ' b” | “b”用于匹配在字符串的开头或结尾包含特定字符或单词的字符串。“B”与“B”相反。 |
' d ', ' d ' | “d”用于匹配字符串中类似于“[0-9]”的十进制数。“D”的发音与“D”相反。 |
' s ', ' s ' | “s”用于匹配类似于“[ntrv]”的字符串中的空白。“S”的发音与“S”相反。 |
' w ', ' w ' | “w”用于匹配字符串中的字母和数字字符。“W”的发音与“W”相反。 |
“ Z” | 它用于匹配字符串末尾的特定字符。它的工作原理类似于“$”字符。 |
例1:使用Match()函数匹配字符串
match()函数用于匹配字符串开头的正则表达式模式。该函数的语法如下:
语法:
Re.match (pattern, string, flags=0)
这里,第一个参数用于定义正则表达式模式。第二个参数用于定义主字符串。第三个参数是可选的,用于定义不同类型的标志。
使用以下脚本创建一个Python文件,该文件使用match()函数将regex模式与定义的字符串匹配。首先,使用定义好的正则表达式模式进行匹配。接下来,从用户处获取一个搜索词,并将其用作与字符串值匹配的正则表达式模式。如果找到任何匹配项,则打印搜索词。否则,打印“No matching value found”字符串。
#导入必要模块
进口再保险
定义打印匹配结果的函数
def里面有():
检查match()函数的返回值
= None:
打印(“的”+ mat.group() +”“在”+ strValue +“”)
其他:
print("没有找到匹配的值")
#定义字符串值
strValue = "先进先出"
#根据模式匹配字符串
mat = re.match('^First', strValue)
#调用函数打印匹配结果
里面有()
#取搜索字符串
inValue = input("输入搜索值")
mat = re.match(inValue +, strValue)
#调用函数打印匹配结果
里面有()
以下是“first”输入值的输出:
示例2:使用Findall()函数查找字符串
findall()函数用于以元组的形式返回在主字符串中找到的所有匹配单词。
语法:
Re.findall (pattern, string, flags=0)
这里,第一个参数用于定义正则表达式模式。第二个参数用于定义主字符串。第三个参数是可选的,用于定义不同类型的标志。
使用以下脚本创建一个Python文件,该脚本从用户获取一个主字符串值和一个搜索字符串值。接下来,使用regex模式中的搜索词在主字符串中查找搜索词。在输出中打印匹配的总数。
#导入必要模块
进口再保险
#取一个字符串值
inValue = input("输入字符串:")
#用一个搜索词
srcValue = input("输入搜索词:")
#搜索字符串中的单词
srcResult = re.findall(srcValue + "w*", inValue)
#打印搜索结果
print("在字符串中找到单词'" + srcValue + " ")
+ str(len(srcResult)) + " times.")
根据输出,搜索词“吃”在“我们吃是为了活着,活着不是为了吃”主字符串中被发现了两次。
示例3:使用Search()函数搜索字符串
search()是另一个在字符串值中搜索特定模式的函数。它包含与match()和findall()函数相同的参数。使用以下脚本创建一个Python文件,该文件在将从用户处获取的字符串值中搜索单词“Python”。如果输入值中存在搜索词,则打印成功消息。否则,将打印失败消息。
#导入re模块
进口再保险
#取一个字符串值
inValue = input("输入字符串:")
#在字符串值中搜索特定单词
srcResult = search(r' python w*', inValue)
#检查是否找到搜索词
如果srcResult:
print(“'”+ srcResult.group() +“'”在“'”+ inValue +“'”中找到)
其他:
print("没有找到搜索字符串")
输出:
如果输入字符串为" I like Python programming ",将显示以下输出:
如果输入字符串为" I like PHP programming ",则显示如下输出:
示例4:使用Sub()函数替换字符串
sub()函数用于基于模式搜索特定字符串并将其替换为另一个单词。该函数的语法如下:
语法:
Re.sub (pattern, replace_string, main_string)
此函数的第一个参数包含用于在主字符串中搜索特定字符串的模式。
该函数的第二个参数包含“replace”字符串值。
该函数的第三个参数包含主字符串。
如果根据第一个参数在主字符串中存在任何匹配的单词,则此函数返回被替换的字符串。
用下面的脚本创建一个Python文件,搜索字符串末尾的两位数字。如果字符串的末尾包含两位数字,则这些数字将被“$50”字符串替换。
#导入re模块
进口再保险
#定义主字符串
strValue = "这本书的价格是70"
#定义搜索模式
Pattern = '[0-9]{2}'
#定义替换值
replaceValue = '$50'
#搜索并替换基于模式的字符串
modified_strValue = re.sub(pattern, replaceValue, strValue)
#打印原始和修改后的字符串值
print ("Original string: " + strValue)
print ("Modified string: " + modified_strValue)
输出:
在主弦的末端有70个。因此,在被替换的字符串中,70被替换为50美元。
示例5:使用Subn()函数替换字符串
subn()函数的工作方式类似于sub()函数,除了它以元组的形式返回输出,其中第一个索引包含替换的值,第二个索引包含匹配的总数。
用以下脚本创建一个Python文件,使用subn()函数在" LinuxHint.com "字符串中搜索字母a到L:
#导入re模块
进口再保险
#定义主字符串
strValue = "LinuxHint.com"
#定义搜索模式
pattern = '[A-L]'
#定义替换值
replaceValue = '*'
#搜索并替换基于模式的字符串
modified_strValue = re.subn(pattern, replaceValue, strValue)
#打印原始字符串和subn()的输出
print("原始字符串:n" + strValue)
print (" subn()函数的输出:")
打印(modified_strValue)
输出:
根据以下输出,“L”和“H”字符被替换为“*”字符。
例6:使用Split()函数拆分字符串
使用以下脚本创建一个Python文件,该脚本使用split()函数根据regex模式将主字符串分成多个部分:
#导入re模块
进口再保险
#定义字符串值
strVal = "Rupa Akter;Nira Chowdhury;Mazharul Islam"
定义用于拆分数据的模式
pattern = '[^A-Za-z]'
#将拆分值存储在列表中
split_result = re.split(pattern, strVal)
print (" split()函数的输出:")
打印(split_result)
输出:
根据输出,主字符串根据脚本中使用的“[^A-Za-z]”模式分为三个部分。
结论
本教程使用简单的Python脚本展示了最常用的元字符、范围和Python内置函数搜索、替换和分割字符串的目的。