我在Internet上使用在线常规工具,它显示正确的结果。 但是当我使用python的re包时,结果是不同的。
pattern = re.compile(u'(?<=slot).*?(?=(}]}}]|$))')
result = pattern.findall(data)
print(result)
我想要一个以'slot'开头的以'}]}}]'结尾的字符串
答案 0 :(得分:0)
你的正则表达式:
u'(?<=slot).*?(?=(}]}}]|$))'
确实,以非贪婪的方式匹配每个序列.?*,使得序列前面有槽,后面是这些符号}]}}] 或文本 $ 的结尾。 在下面的示例字符串中,对于这个 RegExp,我将匹配项加粗:
“Crazy Train slot Spider's Lullabies }]}}]”
要实现您想要的,您可以使用以下模式:
pattern = re.compile(u'(?<=^slot).*(?=}]}}]$)')
插入符号 (^) 确保您从一开始就搜索 slot,而运算符 (?<...) 从结果中丢弃 slot。之后:您匹配所有内容 .* 直到到达所需的最终 }]}}],运算符 (?=...) 丢弃 }]}}] 结果。
以下文本的匹配以粗体显示:
"slot 蜘蛛的摇篮曲 }]}}]"