【发布时间】:2018-07-24 07:40:03
【问题描述】:
假设我们有:
- ABC_ANY_STRING_DEF
- ANY_STRING
- ANY_STRING_DEF
- ABC_CDE_ANY_STRING_DEF
“ABC_”或“CDE_”可以是前缀也可以不存在。另外,“_DEF”可以是后缀也可以不存在。
在这种情况下,我可以使用一个正则表达式在前缀和后缀之间提取 ANY_STRING(只是任何一组字符,只是一个字符串)吗? p>
例如输入=“ABC_CDE_I like an apple_DEF”,则输出必须是“I like an apple”。
我尝试了以下代码,但它没有输出我所期望的。
re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)?")
或
re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)*")
非常感谢您的建议。
【问题讨论】:
-
你的目标是什么?请提供输入和输出的示例
-
ANY_STRING是与一个_连接的两个字符串的块吗?还是只是anyStrIng?一个现实生活中的例子会有所帮助。 -
@Wiktor ANY_STRING 表示任何字符串,如 \S+
-
它太笼统了,不能称它为任何字符串,任何字符串都可能像 ABC_CDE 一样最终是不需要的,如何区分需要什么,正则表达式是特定于要求的。必须有某种模式,例如 @ 或总是以 _A 等开头
-
@Inder “ABC_”或“CDE_”可以是前缀,“_DEF”可以是后缀。我想提取前缀和后缀之间的字符串。但它们可以存在也可以不存在。
标签: python regex python-2.7