我有一個字串:
s=
"(2021-06-29T10:53:42.647Z) [Denis]: hi
(2021-06-29T10:54:53.693Z) [Nicholas]: TA FOR SHOWING
(2021-06-29T11:58:29.053Z) [Nicholas]: how are you bane
(2021-06-29T11:58:29.053Z) [Nicholas]:
(2021-06-29T11:58:29.053Z) [Nicholas]: #END_REMOTE#
(2021-06-30T08:07:42.029Z) [Denis]: VAL 01JUL2021
(2021-06-30T08:07:42.029Z) [Denis]: ##ENDED AT 08:07 GMT##"
我想從中提取文本。預期輸出為:
comments=['hi','TA FOR SHOWING','how are you bane',' ','#END_REMOTE#','VAL 01JUL2021','##ENDED AT 08:07 GMT##']
我嘗試過的是:
comments=re.findall(r']:\s (.*?)\n',s)
正則運算式運行良好,但我無法獲得空白文本 ''
uj5u.com熱心網友回復:
這是你想要的嗎?
comments = re.findall(r']:\s(.*?)\n',s)
如果后面的空格:總是一個空格,\s 應該是\s。\s 表示一個或多個空格。
uj5u.com熱心網友回復:
您可以]在捕獲組中排除匹配而不匹配,并且如果您還想匹配最后一行的值,您可以斷言字串的結尾$而不是匹配強制換行符\n
請注意,\s可以匹配換行符,否定字符類[^]]*也可以匹配換行符
]:\s ([^]]*)$
正則運算式演示| Python 演示
import re
regex = r"]:\s ([^]]*)$"
s = ("(2021-06-29T10:53:42.647Z) [Denis]: hi\n"
"(2021-06-29T10:54:53.693Z) [Nicholas]: TA FOR SHOWING\n"
"(2021-06-29T11:58:29.053Z) [Nicholas]: how are you bane \n"
"(2021-06-29T11:58:29.053Z) [Nicholas]: \n"
"(2021-06-29T11:58:29.053Z) [Nicholas]: #END_REMOTE#\n"
"(2021-06-30T08:07:42.029Z) [Denis]: VAL 01JUL2021\n"
"(2021-06-30T08:07:42.029Z) [Denis]: ##ENDED AT 08:07 GMT##")
print(re.findall(regex, s, re.MULTILINE))
輸出
['hi', 'TA FOR SHOWING', 'how are you bane ', '', '#END_REMOTE#', 'VAL 01JUL2021', '##ENDED AT 08:07 GMT##']
如果你不想越界:
]:[^\S\n] ([^]\n]*)$
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354299.html
上一篇:正則運算式使用星號加粗
下一篇:決議部分url-python
