Python 查找以'为边界的文本&';符号

Python 查找以'为边界的文本&';符号,python,regex,Python,Regex,范例 生成如下数据的正则表达式是什么 x='RTRV:&PM_DICT[&PM_LIST&:&PM_LIST&]&' “&”符号内的所有文本 或删除空项目 x='RTRV:&PM_DICT[&PM_LIST&:&PM_LIST&]&' >>> x.split("&")[1:] ['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']', '']

范例

生成如下数据的正则表达式是什么

x='RTRV:&PM_DICT[&PM_LIST&:&PM_LIST&]&'
“&”符号内的所有文本

或删除空项目

x='RTRV:&PM_DICT[&PM_LIST&:&PM_LIST&]&'
>>> x.split("&")[1:]
['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']', '']
你的问题中神秘地遗漏了
。它去哪里了?可能会进入一个
过滤器

>>> filter(lambda i: len(i) > 0, x.split("&")[1:])
['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']']

为什么
被排除?您已经尝试了什么?为什么不起作用?为什么要还原@falsetru的编辑?它更干净。我修复了它。这基本上是我的答案的副本。如果你觉得它被复制了,你可以投反对票。这里还有一个正则表达式,我不认为你复制粘贴了它(我将其编辑为“复制”)。只是没有充分的理由使用
re
库。它应该是
[1:-1]
。否则,将包括
后面的部分。问题多于答案。正如您所说,过滤空字符串是不够的。考虑一下
x='RTRV:&PM\u DICT[&PM\u LIST&:&PM\u LIST&]&这个应该被排除在外'
我添加了一个过滤器。这对于一个不费吹灰之力的问题来说太费劲了。
>>> filter(lambda i: len(i) > 0, x.split("&")[1:])
['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']']
>>> forbidden_items = set(["", ":", "RTRV:"])
>>> filter(lambda i: i not in forbidden_items, x.split("&"))
['PM_DICT[', 'PM_LIST', 'PM_LIST', ']']
>>> x
'RTRV:&PM_DICT[&PM_LIST&:&PM_LIST&]&'
>>> re.split('&',x)[1:]
['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']', '']
>>> x.split('&')[1:]
['PM_DICT[', 'PM_LIST', ':', 'PM_LIST', ']', '']