需要跨越多行去匹配當使用(.)去匹配任意字元的時候,點不能匹配換行符
正規表示式 (?:.|\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...