import re
def regex_func(string):
pattern=re.compile(r"""(?mx)
^DISPLAY MANAGER\s*.*\s*
\s*mOnlyCode=\s*.*\s*
\s*mSafeMode=\s*.*\s*
\s*mPendingTraversal=\s*.*\s*
\s*mGlobalDisplayState=\s*.*\s*
\s*mNextNonDefaultDisplayId=\s*.*\s*
\s*mViewports=\s*(.*) deviceWidth=([\d]+), deviceHeight=([\d]+)\}\]$""")
result = pattern.findall(string)
if result:
print(result)
def main():
logfile = open("dumpstate.txt", "r", encoding='utf-8', errors='ignore')
regex_func(logfile.read())
logfile.close()
Фрагмент ввода:
DUMP OF SERVICE display:
DISPLAY MANAGER (dumpsys display)
mOnlyCode=false
mSafeMode=false
mPendingTraversal=false
mGlobalDisplayState=ON
mNextNonDefaultDisplayId=2
mViewports=[DisplayViewport{type=INTERNAL, valid=true, displayId=0, uniqueId='local:0', physicalPort=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 2340), physicalFrame=Rect(0, 0 - 1080, 2340), deviceWidth=1080, deviceHeight=2340}]
mDefaultDisplayDefaultColorMode=0
mSingleDisplayDemoMode=false
mWifiDisplayScanRequestCount=0
mStableDisplaySize=Point(1080, 2340)
mMinimumBrightnessCurve=[(0.0, 0.0), (2000.0, 50.0), (4000.0, 90.0)]
Проблема: я пытаюсь извлечь блок строк, начиная с «DISPLAY MANAGER» и заканчивая строкой, содержащей «mViewports =». Я повторно использовал многострочный шаблон, который работает (в другом случае). (Я новичок в регулярном выражении). Шаблон не возвращает совпадений. Обращение за помощью к экспертам.