关于python re

时间:2018-11-07 03:41:32

标签: python-3.5

我在Internet上使用在线常规工具,它显示正确的结果。 但是当我使用python的re包时,结果是不同的。

pattern = re.compile(u'(?<=slot).*?(?=(}]}}]|$))')
result = pattern.findall(data)
print(result)

我想要一个以'slot'开头的以'}]}}]'结尾的字符串

1 个答案:

答案 0 :(得分:0)

你的正则表达式:

u'(?<=slot).*?(?=(}]}}]|$))'

确实,以非贪婪的方式匹配每个序列.?*,使得序列前面有,后面是这些符号}]}}] 或文本 $ 的结尾。 在下面的示例字符串中,对于这个 RegExp,我将匹配项加粗:

“Crazy Train slot Spider's Lullabies }]}}]”

要实现您想要的,您可以使用以下模式:

pattern = re.compile(u'(?<=^slot).*(?=}]}}]$)')

插入符号 (^) 确保您从一开始就搜索 slot,而运算符 (?<...) 从结果中丢弃 slot。之后:您匹配所有内容 .* 直到到达所需的最终 }]}}],运算符 (?=...) 丢弃 }]}}] 结果。

以下文本的匹配以粗体显示:

"slot 蜘蛛的摇篮曲 }]}}]"