• Python 正则表达式转义



    这篇文章是关于 Python 正则表达式转义的。 此外,我们将介绍 Python 正则表达式转义以及如何通过适当的示例代码使用它,以及 Python 正则表达式的多种用途。

    此外,Python 支持使用正则表达式(或正则表达式)对字符串进行搜索和替换操作。


    Python 正则表达式转义

    RegEx 是一种根据预定义模式匹配文本的强大技术。 将文本与特定模式进行比较可以检测它是否存在。

    它还可以将模式分解为子模式。 在 Python 中,正则表达式转义可以执行范围广泛的任务。

    它可以执行搜索和替换操作、替换文本中的模式以及检查字符串是否包含特定模式。 今天我们还将使用正则表达式执行搜索和替换操作。

    Python 中的正则表达式可以使用标准库中的 re 模块来表达。 正则表达式和字符串考虑它们的主要目的,即执行搜索。

    如果有第一个匹配项,则将返回匹配项。

    Python 有一个默认模块 re,它可以帮助进行搜索和替换。 我们的代码必须在开始时导入模块才能使用它。

    import re
    
    • 1

    示例代码:

    import re
    match = re.search(r'Analytics', 'DataScience: Data Science & Analytics\                                    subfield of AI')
    print(match)
    print(match.group())
    print("Begin the Index:", match.start())
    print("Let's finish the Index:", match.end())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出:

    <re.Match object; span=(28, 37), match='Analytics'>
    Analytics
    Begin the Index: 28
    Let's finish the Index: 37
    
    • 1
    • 2
    • 3
    • 4

    Python 正则表达式转义的语法

    原始属性在这里由 r 字符(r’property’)表示,而不是由正则表达式表示。 与常规字符串不同,纯字符串不会将 \ 字符解释为转义字符

    由于正则表达式引擎使用 / 字符进行转义的方式,它使用 / 字符进行转义。

    让我们用 Python 对此进行详细说明。

    import re
    # When an escape() is used in the first case, it returns a string with BackSlash '/' before every non-Alphanumeric character. In the second case, it returns a string with BackSlash '/' before '' only.
    print(re.escape("It was really a wonderful experience so far"))
    print(re.escape("I am curious about the experience [a-9], she said \t ^Awesome"))
    
    • 1
    • 2
    • 3
    • 4

    输出:

    It\ was\ really\ a\ wonderful\ experience\ so\ far
    I\ am\ curios\ about\ the\ experience\ \[a\-9\],\ she\ said\ \	\ \^Awesome
    
    • 1
    • 2

    另外,如果要用Python中的正则表达式检查字符串中是否存在某个单词,可以用逗号分隔字符串。

    只要字符串中没有转义字符,r 就会使字符串成为原始字符串,不处理转义字符。

    此外,re.match 从字符串的开头开始匹配。 这意味着它搜索字符串和模式之间的精确匹配。

    如果您需要在任何地方匹配字符串中的任何内容,请使用 re.search。 下面是一个例子。

    import re
    line = 'This,is,a,practice,string'
    re.match("practice", line)
    re.search("practice", line)
    
    • 1
    • 2
    • 3
    • 4

    输出:

    <re.Match object; span=(10, 18), match='practice'>
    
    • 1

    此外,我们将了解 Python 正则表达式的多种用途。


    Python 正则表达式的多次使用

    搜索并替换为正则表达式

    在 regex 方法中,搜索一个字符串,然后替换一些其他值。 Python 的 re.sub() 模块中的 re.sub() 函数用于完成此操作。

    语法:

    re.sub(pattern, replacement, string, count=0, flags=0)
    
    • 1

    我们可以使用 Python 使用正则表达式搜索和查找字符串。 在这种情况下,字符串是包含您要操作的字符串的变量。

    如果模式在字符串中多次出现,我们可以指定您希望模式被替换多少次。 0 是默认值; 在任何情况下,它都是可选的。

    无需指定正则表达式标志。

    示例代码:

    import re
    str = "abid304@outlook.com"
    print(re.sub("[a-z]*@", "abc@", str))
    
    • 1
    • 2
    • 3

    输出:

    abid304abc@outlook.com
    
    • 1

    用正则表达式替换多模式

    可以使用正则表达式一次替换多个模式。 可以使用以下语法轻松完成此操作。

    语法:

    re.sub(pattern_11 | pattern_22, replacement, string, count=0, flags=0)
    
    • 1

    示例代码:

    import re
    str = "MachineLearning is the Subfield of AI"
    print(re.sub(r"(\s)|(-)", ",", str))
    
    • 1
    • 2
    • 3

    输出:

    MachineLearning,is,the,Subfield,of,AI
    
    • 1

    使用正则表达式将多个模式替换为多个替换值

    正则表达式也可用于用不同的替换项替换多个模式。 如以下示例所示,需要稍作修改。

    示例代码:

    import re
    def convrt_case(mtch_obj):
      if mtch_obj.group(1) is not None:
        return mtch_obj.group(1).lower()
      if mtch_obj.group(2) is not None:
        return mtch_obj.group(2).upper()
    str = "mACHINE lEARNING IS THE sUBFIELD OF ai"
    print(re.sub(r"([A-Z]+)|([a-z]+)", convrt_case, str))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出:

    Machine Learning is the Subfield of AI
    
    • 1

    如本例所示,该字符串同时包含需要替换的大写和小写字母。 大写字母需要替换为小写字母,反之亦然。

    我们将创建两个组,然后添加一个函数来替换它们。

    在 Python 中,正则表达式转义 sub() 方法用于替换字符串。 替换后的字符串由 re 模块中的 Python 内置方法返回。

    确保导入 re 模块。 在此方法中,搜索字符串中的模式并用新表达式替换。

    我们希望这篇 Python 文章能帮助您了解如何更有效地在 Python 中使用正则表达式转义。

  • 相关阅读:
    Java通过反射注解赋值
    HyperLynx(三十)高速串行总线仿真(二)
    LeetCode 779. 第K个语法符号
    基础的C语言编程题,喊你快来巩固一下
    如何理解CI/CD的概念及其在Java项目中的应用
    【快应用】H5快应用Web组件打开的网页出现跨域问题如何解决?
    nodejs+mysql+vscode网上图书商城销售管理系统vue
    典型相关分析CCA计算过程
    MySQL JDBC驱动版本与数据库版本的对应关系及注意事项
    python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
  • 原文地址:https://blog.csdn.net/fengqianlang/article/details/131076471