python-3.x - 空字符串的正则表达式
问题描述
我有一个字符串:
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)
正则表达式效果很好,但我无法将空白文本作为''
解决方案
您可以在捕获组中排除匹配]
,如果您还想匹配最后一行的值,您可以断言字符串的结尾$
而不是匹配强制换行符\n
请注意,\s
可以匹配换行符,并且否定字符类[^]]*
也可以匹配换行符
]:\s+([^]]*)$
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]*)$
推荐阅读
- javascript - 如何使用 JavaScript 创建电子商务产品价格度量计算器?
- c# - IQueryable 执行 LINQ 查询后返回空结果
- spring-boot - 使用 SpringDoc webflux 支持时无法显示 Swagger/OpenApi 文档
- sql-server - 允许在 Oracle 中为 SSRS 报告提供多个值
- jestjs - 无法使用 jest 在 vuejs 中获取 vuex 存储 getters 数据
- ios - 如何从不同的函数调用 TextField
- gitlab-ci - 来自 kubectl 命令中另一个项目的 Gitlab CI 参考文件
- javascript - 在 Chrome 扩展中使用 Google API 电子表格 JS 删除值
- python - 隐藏(或不显示)mplfinance 中的图
- sql - 如何在 SQL SERVER 2016+ 中生成 SHA-3(256) 哈希