00108 多行匹配模式

2021-07-26 02:03:15 字數 928 閱讀 1592

需要跨越多行去匹配

當使用(.)去匹配任意字元的時候,點不能匹配換行符

正規表示式 (?:.|\n)*

忽略標識 re.dotall

import re

comment = re.compile(r'/\*(.*?)\*/')

text1 = '/* this is a comment */'

resval = comment.findall(text1)

print(resval)

text2 = """/* this is a

multiline comment */

"""#匹配不到

resval = comment.findall(text2)

print(resval)

#1. 修改匹配方式

"""(?:***) 指定了乙個非捕獲組。

也就是它定義了乙個僅僅用來做匹配,而不能通過單獨捕獲或編號的組

"""comment = re.compile(r"/\*((?:.|\n)*?)\*/")

resval = comment.findall(text2)

print(resval) #->[' this is a\nmultiline comment ']

# 2.新增re.dotall 忽略

comment = re.compile(r'/\*(.*?)\*/', re.dotall)

resval = comment.findall(text2)

print(resval) #->[' this is a\nmultiline comment ']

re模組 傳送門,待補充

Python 秘籍 多行匹配模式

問題 你正在試著使用正規表示式去匹配一大塊的文字,而你需要跨越多行去匹配。解決方案 這個問題很典型的出現在當你用點 去匹配任意字元的時候,忘記了點 不能匹配換行符的事實。比如,假設你想試著去匹配 c 語言分割的注釋 comment re.compile r text1 this is a comme...

Filebeat 多行日誌匹配處理

在使用 filebeat 採集 tomcat 日誌時,因為預設採集是按照行採集的,在統計的時候會不準確,因此採用 multiline 進行處理。根據業務和日誌級別情況,若日誌級別是配成 error 只需要將錯誤日誌進行合併處理,若日誌級別低於 error 根據日誌分析的要求,我這邊會只將 帶有 er...

匹配多行文字 m用法

1 00 00 09,855 00 00 14,724 britain was an object of desire.200 00 26,295 00 00 31,847 tacitus declared it worth the conquest,300 00 32,015 00 00 35,8...