日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

正則表達式(Regular expression)可用來檢查文本中是否包含指定模式的字符串,通常是按行來處理(POSIX標準),因為.操作符通常不匹配換行符,如果要匹配多行怎么處理呢?本文介紹正則表達式跨行匹配實現方法。

 

1. sed 命令刪除多行

測試文檔test.txt內容如下:

start
test1
test2
end

刪除 start 和 end 之間的內容

# 包括`start` 和 `end`
sed -i '/start/,/end/d' test.txt  

# 不包括`start` 和 `end`
sed -i '/start/,/end/{{//!d;};}' test.txt 

2. Python正則表達式匹配多行

Python中匹配多行方法如下:

①re.DOTALL或者re.S參數

import re

data = "1nstartntest1ntest2nendn2"

reg1 = r"start.*end"
reg2 = r"start(.*)end"
res1 = re.findall(reg1, data, flags=re.S)
print(res1)
res2 = re.findall(reg2, data, flags=re.DOTALL)
print(res2)

執行結果:

['startntest1ntest2nend']
['ntest1ntest2n']

② 表達式(.|n|r)*

import re
data = "1nstartntest1ntest2nendn2"

reg3 = r"start((.|n|r)*)end"
res = re.findall(reg3, data)
print(res)

執行結果:

[('ntest1ntest2n', 'n')]

③ 表達式[sS]*

import re
data = "1nstartntest1ntest2nendn2"

reg4 = r"start([sS]*)end"
res = re.findall(reg4, data)
print(res)

執行結果:

['ntest1ntest2n']

④ 表達式(?s)

import re
data = "1nstartntest1ntest2nendn2"

reg5 = r"(?s)start(.*)end"
res = re.findall(reg5, data)
print(res)
reg5 = r"(?s)start.*end"
res = re.findall(reg5, data)
print(res)

執行結果:

['ntest1ntest2n']
['startntest1ntest2nend']

參考:

  1. https://stackoverflow.com/questions/159118/how-do-i-match-any-character-across-multiple-lines-in-a-regular-expression

--THE END--

分享到:
標簽:正則表達式
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定