【发布时间】:2021-02-24 11:13:20
【问题描述】:
有字符串要被一个函数处理,整个过程是这样的:
surrounding_characters = ["\n", "\t", "\r"]
input_string = "\nT\t \tE\t\nS\n\rT\t"
_s = "".join(surrounding_characters)
pattern = re.compile(rf"([\s\S])(?<=[{_s}])(?=[{_s}])")
print(re.findall(pattern, input_string))
## ['\t', '\n']
我更希望看到['T', ' ', 'E', 'S', 'T'] 作为输出,因为这些字符中的每一个都被空白字符包围。从模式中删除第一组并将其保留为 [\s\S] 也不会改变方法的行为。
如何让它按预期工作?
【问题讨论】:
-
看,
([\s\S])(?<=[\r\t\n])表示任何等于 CR、LF 或 TAB 的字符。它只匹配这三个字符。
标签: python python-3.x regex