您在在线测试仪上对字符串进行测试,而应该对字符串进行测试。
这个
'\r\n\r\nSupersedes\r\nNone\r\n\r\nTriax PFG Interface Boards: Inova: P/N 01-903510-02 and Unity plus: P/N 01-903510-03\r\n\r\nService Serial Numbers:\r\nUS00000000-US99999999\r\n\r\n'
是字符串文本,
\r
和
\n
里面有
转义序列
由python字符串引擎分别更改为cr和lf符号。
字符串文字表示以下内容
文字字符串
:
Supersedes
None
Triax PFG Interface Boards: Inova: P/N 01-903510-02 and Unity plus: P/N 01-903510-03
Service Serial Numbers:
US00000000-US99999999
在开始和结束处有两个空行。见
the actual regex demo online
.
你可以用
import re
s = '\r\n\r\nSupersedes\r\nNone\r\n\r\nTriax PFG Interface Boards: Inova: P/N 01-903510-02 and Unity plus: P/N 01-903510-03\r\n\r\nService Serial Numbers:\r\nUS00000000-US99999999\r\n\r\n'
m = re.search(r'Supersedes:?\s+[\w -]+\s+(.*)\sSerial Number', s, re.S)
if m:
print(m.group(1))
查看
Python demo
细节
-
Supersedes:?
-
Supersedes:
或
Supersedes
子字符串
-
\s+
-1+空格(包括垂直空格,即换行符)
-
[\w -]+
-1+字、空格和/或连字符
-
s+
-1+空白
-
(.*)
-任何0+字符(也包括换行符,由于
re.S
标记)尽可能多(替换
*
具有
*?
如果期望的匹配超过1个,则使其尽可能少地匹配字符)
-
\s
-空白
-
Serial Number
-A
序列号
子字符串。