正则表达式中(?s)与(?m)的区别

理论:

(?m) 和 (?s) 是正则表达式中的两个模式标志,它们具有不同的作用:

  1. (?m) 多行模式标志(也称为 “multiline” 模式):
  • 默认情况下,正则表达式将整个输入字符串视为单行
  • 多行文本中使用该标志时,正则表达式会匹配每一行
  1. (?s) 单行模式标志(也称为 “dotall” 模式):
  • 默认情况下,. 元字符匹配除了换行符之外的任意字符。
  • 当使用 单行模式标志时,. 元字符将匹配包括换行符在内的任意字符。

实践:

import re

pattern1 = r'^.*'  
pattern2 = r'(?m)^.*'  
pattern3 = r'(?s)^.*'

matches1 = re.findall(pattern1, "Hello\nWorld")
matches2 = re.findall(pattern2, "Hello\nWorld")
matches3 = re.findall(pattern3, "Hello\nWorld")

print(matches1)  # 输出:['Hello']
print(matches2)  # 输出:['Hello', 'World']
print(matches3)  # 输出:['Hello\nWorld']
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则表达式是一种用于匹配和操作字符串的强大工具。它可以用于搜索、替换、验证和提取字符串的特定模式。 在使用正则表达式时,你可以使用一些特殊字符和语法来定义模式。下面是一些常用的正则表达式语法: 1. 字符匹配: - 普通字符:直接匹配该字符。 - 元字符:具有特殊含义的字符,如`.`匹配任意字符,`\d`匹配数字等。 2. 字符类: - 方括号`[]`:匹配方括号的任意一个字符。 - 脱字符`^`:在方括号内表示取反。 3. 重复: - `*`:匹配前面的元素零次或多次。 - `+`:匹配前面的元素一次或多次。 - `?`:匹配前面的元素零次或一次。 - `{n}`:匹配前面的元素恰好 n 次。 - `{n,}`:匹配前面的元素至少 n 次。 - `{n,m}`:匹配前面的元素至少 n 次,但不超过 m 次。 4. 边界匹配: - `^`:匹配字符串的开头。 - `$`:匹配字符串的结尾。 - `\b`:匹配单词的边界。 5. 分组和捕获: - `()`:将多个元素组合为一个整体。 - `(?:)`:只分组,不捕获。 6. 特殊序列: - `\d`:匹配数字。 - `\w`:匹配字母、数字或下划线。 - `\s`:匹配空白字符。 7. 贪婪与非贪婪: - 默认情况下,正则表达式是贪婪的,即尽可能多地匹配。 - 在重复元素后加上`?`可以使其变为非贪婪模式。 正则表达式的使用可以通过编程语言正则表达式库来实现,不同编程语言的正则表达式语法可能略有不同。你可以根据自己使用的编程语言查阅相关文档来学习如何在该语言使用正则表达式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值