我正在使用带正则表达式的python来读取文件并获取字符(/)后的字符串列表。
例如:
text = "Youngblood /Pop Midnight/R&B Thunder/Rock"
re.findall(r'/([^\s]+)', text)
会返回
['Pop', 'R&B', 'Rock']
现在,假设在特殊情况下,子字符串中有两个字符'/',
abc\/def/this
或
abc\/def\/ghi/this
正则表达式将无法正常工作(如我所愿),并返回'def / this'或'def / ghi / this'。
正确的输出是“ this”。如何修复正则表达式以使其与特殊情况配合使用?
答案 0 :(得分:3)
2
返回
re.findall(r'/([^\s/]+(?!\S))', text)
您需要先行,因为您想在比赛后检查角色。您不能使用['Pop', 'R&B', 'Rock', 'ghj']
(将与空格匹配),因为这样会跳过最后一项。构造(?=\s)
表示 not not 一个空格,该空格既与空格匹配,也与字符串结尾。
答案 1 :(得分:1)
如果字符串之间始终有空格,即使没有正则表达式也可以做到。
size
输出:
text = "Youngblood/Pop Midnight/R&B Thunder/Rock abc/def/ghj"
output = []
for item in text.split(" "):
output.append(item.split("/")[-1])
答案 2 :(得分:0)
如果您不愿意使用 all regex
来完成确切的目的,则可以将已经拥有的内容与该列表理解功能相结合:
targets = [e.split('/')[-1] for e in re.findall('/([^\s]+)', text)]