c语言编程笔录

首页 >   > 笔记大全

笔记大全

利用Python正则表达式进行复杂文本搜索与匹配

更新时间:2024-01-02

正则表达式

正则表达式是一种用来描述、匹配一系列符合某种规则的字符串的方法。在Python中,可以使用re模块来进行正则表达式的匹配。

import re

str = "Hello World! This is a sample string."
pattern = "sample"

result = re.search(pattern, str)
if result:
    print("匹配成功!")
else:
    print("匹配失败!")

在上面的例子中,使用了re.search()方法来进行匹配。其中,pattern参数就是需要匹配的正则表达式,str参数则是需要进行匹配的字符串。如果匹配成功,则返回一个Match对象,否则返回None。

常用正则表达式符号

正则表达式中,有几个常用的符号需要掌握:

  • ^:匹配字符串的开头
  • $:匹配字符串的结尾
  • .:匹配任意字符(除了换行符)
  • *:匹配前面的字符零次或多次
  • +:匹配前面的字符一次或多次
  • ?:匹配前面的字符零次或一次
  • []:匹配括号内的任意一个字符
  • |:匹配两个备选项中的任意一个
  • ():分组匹配

下面是一些使用常用正则表达式符号的示例:

import re

str1 = "Hello World! This is a sample string."
str2 = "Heo World! Ti i a ample tring."
pattern1 = "^He"
pattern2 = "ing.$"
pattern3 = "llo|ample"
pattern4 = "a(mple )+"
pattern5 = "[aeiou]"
pattern6 = "(Hello).*(sample)"
pattern7 = "(H.*?)!"

result1 = re.search(pattern1, str1)
result2 = re.search(pattern2, str1)
result3 = re.search(pattern3, str1)
result4 = re.search(pattern4, str1)
result5 = re.findall(pattern5, str1)
result6 = re.search(pattern6, str1)
result7 = re.search(pattern7, str1)

if result1:
    print("匹配成功1!")
if result2:
    print("匹配成功2!")
if result3:
    print("匹配成功3!")
if result4:
    print("匹配成功4!")
print(result5)
if result6:
    print("匹配成功6!")
if result7:
    print("匹配成功7!")
print(result7.group(1))

高级正则表达式技巧

正则表达式可以使用一些高级技巧来实现更为复杂的匹配。例如:

  • 零宽断言:在匹配一个字符串的时候,需要满足一些特定的条件,而这些条件不属于匹配结果。例如,(?=...)表示正向肯定预查,(?!...)表示负向否定预查。
  • 重复匹配:在匹配一个字符串的时候,需要重复匹配某个子串。例如,(?P=name)表示后向引用,(?:...)表示非捕获分组。

下面是一些使用高级正则表达式技巧的示例:

import re

str1 = "Hello World! This is a sample string."
str2 = "2022-06-30"
pattern1 = r"\b\w+\b(?\d{2}):(?P\d{2}):(?P\d{2})(?Pam|pm)"
pattern4 = r"(?:(?P\d{2})/)?(?P\d{2})/(?P\d{4})"

result1 = re.findall(pattern1, str1)
result2 = re.search(pattern2, str2)
result3 = re.search(pattern3, "10:45:30am")
result4 = re.search(pattern4, "20/06/2022")

print(result1)
print(result2.group())
print(result3.groupdict())
print(result4.groupdict())

总结

正则表达式是一种十分强大的字符串匹配方法,可以用来实现各式各样的需求。Python中的re模块提供了对正则表达式进行解析和匹配的功能,同时也支持使用高级正则表达式技巧。因此,了解和掌握正则表达式是当下程序员必不可少的一项技能。