在读取ADB Logcat的行中未看到Python正则表达式

在读取ADB Logcat的行中未看到Python正则表达式,python,regex,adb,Python,Regex,Adb,为可能显而易见的答案道歉。使用Python2.7,我正在逐行动态读取Android ADB logcat流。我试图捕捉SIM卡在手机上开始使用的时间点。我可以读取其他(非正则表达式)字符串并成功捕获logcat流中的特定点,但由于某些原因,我的正则表达式丢失了。我上一次在这种规模上使用regex是在Perl中,因此我对Python的解释可能有点偏颇 这是我试图捕捉的字符串 < OPERATOR {Orange, Orange, 23430} [ptt1]

为可能显而易见的答案道歉。使用Python2.7,我正在逐行动态读取Android ADB logcat流。我试图捕捉SIM卡在手机上开始使用的时间点。我可以读取其他(非正则表达式)字符串并成功捕获logcat流中的特定点,但由于某些原因,我的正则表达式丢失了。我上一次在这种规模上使用regex是在Perl中,因此我对Python的解释可能有点偏颇

这是我试图捕捉的字符串

< OPERATOR {Orange, Orange, 23430} [ptt1]
但同样的字符串可能是另一个操作符的字符串

< OPERATOR {O2 - UK, O2 - UK, 23410} [ptt5]
我的正则表达式尝试是这样的

\<\sOPERATOR\s\{\w+\,\s\w+\,\s\d+\}\s\[\w+\d\]

\
您忽略了一个事实,即在运算符名称中可以包含与单词字符不同的字符(
\w

<\sOPERATOR\s\{[^,]+,\s[^,]+,\s\d+\}\s\[\w+\d\]
最后,如果您的目标是从头到尾检查行的语法,则需要向模式添加锚定:

^< OPERATOR {[^,]+, [^,]+, \d+} \[\w+\d]$
^<运算符{[^,]+,[^,]+,\d+}\[\w+\d]$
(如果使用
re.match
可以删除第一个锚定。)


(*)您也可以删除花括号和收尾方括号之前的反斜杠。

我应该提到,我在这项任务中使用了正确的ADB logcat'-b radio'标志。非常感谢@Casimir,您的示例成功了。我一点也不擅长正则表达式,我认为我的方法过于谨慎,用每个字符替换!再次感谢。谢谢vks的快速回复,也谢谢你的链接,非常有用,希望我能接受两个答案!
< OPERATOR \{[^,]+, [^,]+, \d+\} \[\w+\d\]
^< OPERATOR {[^,]+, [^,]+, \d+} \[\w+\d]$