欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

正則表達式中(?s)與(?m)的區(qū)別解析

 更新時間:2023年11月10日 15:54:18   作者:Takoony  
(?m) 和 (?s) 是正則表達式中的兩個模式標(biāo)志,它們具有不同的作用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

正則表達式中(?s)與(?m)的區(qū)別

理論:

(?m) 和 (?s) 是正則表達式中的兩個模式標(biāo)志,它們具有不同的作用:

1.(?m) 多行模式標(biāo)志(也稱為 “multiline” 模式):

  • 默認情況下,正則表達式將整個輸入字符串視為單行
  • 多行文本中使用該標(biāo)志時,正則表達式會匹配每一行

2.(?s) 單行模式標(biāo)志(也稱為 “dotall” 模式):

  • 默認情況下,. 元字符匹配除了換行符之外的任意字符。
  • 當(dāng)使用 單行模式標(biāo)志時,. 元字符將匹配包括換行符在內(nèi)的任意字符。

實踐:

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']

正則表達式re.S與re.M的區(qū)別

一、python中的re模塊

import re # 導(dǎo)入re模塊

二、re.S與re.M的區(qū)別

1. re.S表示單行匹配模式

2. re.M表示多行匹配模式

三、案例演示

1. re.M多行匹配

import re
string = '''
hate is a beautiful feel
love you very much
love she
love her
'''
pattern = re.compile(r'^love',re.M) # re.M 多行模式
ret = pattern.findall(string)
print(ret) # ['love', 'love', 'love']

2. re.S單行匹配

import re
string = '''<div>沁園春-雪
北國風(fēng)光
千里冰封
萬里雪飄
望長城內(nèi)外
惟余莽莽
大河上下
頓失滔滔
山舞銀蛇
原馳蠟象
欲與天公試比高
</div>'''
pattern = re.compile(r'^<div>(.*?)</div>',re.S) # re.S 單行模式
ret = pattern.findall(string)
print(ret) # ['沁園春-雪\n北國風(fēng)光\n千里冰封\n萬里雪飄\n望長城內(nèi)外\n惟余莽莽\n大河上下\n頓失滔滔\n山舞銀蛇\n原馳蠟象\n欲與天公試比高\n']

【.】可以匹配除換行符之外的所有字符,當(dāng)設(shè)置成re.S之后,可以簡單理解為:【.】可以匹配換行符,所以【.】可以匹配所有字符

 3. \w+不能匹配換行符

import re
string = '''<div>沁園春-雪
北國風(fēng)光
千里冰封
萬里雪飄
望長城內(nèi)外
惟余莽莽
大河上下
頓失滔滔
山舞銀蛇
原馳蠟象
欲與天公試比高
</div>'''
pattern = re.compile(r'^<div>(\w+)</div>',re.S) # re.S 單行模式
ret = pattern.findall(string)
print(ret) # [],匹配為空

四、復(fù)習(xí)一下正則表達式

1. 單字符:
. : 除換行之外所有字符
[]: [aoe][a-w] 匹配集合中任意一個字符
\d: 數(shù)字 [0-9]
\D: 非數(shù)字
\w: 數(shù)字、子母、下劃線、中文
\W: 非\w
\s: 所有的空白字符
\S: 非空白字符
2. 數(shù)量修飾:
*:任意次數(shù) >=0
+: 至少1次 >=1
?: 可有可無 0次或者1次
{m}: 固定m次
{m,}: 至少m次
{m,n}: m-n次
3. 邊界:
^: 以...開頭
$: 以...結(jié)尾
4. 分組:
(): 視為一個整體
(ab){4}:視為一個整體,匹配次數(shù)
(): 子模式\組模式  \1  \2
5. 取消貪婪模式
.*?
.+?
6. 查找
match: 只從開頭開始找
search: 從任意位置開始找
findall: 找所有

1. 分組子模式

import re
string = '''<p><div><span>豬八戒</span></div></p>'''
pattern = re.compile(r'^<(\w+)><(\w+)>\w+</\2></\1>')
ret = pattern.search(string)
print(ret) # <_sre.SRE_Match object; span=(3, 30), match='<div><span>豬八戒</span></div>'>

到此這篇關(guān)于正則表達式中(?s)與(?m)的區(qū)別的文章就介紹到這了,更多相關(guān)正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論