假设我们有:
“ ABC_”或“ CDE_”可以是前缀或不存在。此外,“ _ DEF”可以是后缀或不存在。
在这种情况下,我可以使用一个正则表达式在前缀和后缀之间提取 ANY_STRING (只是任何字符集,只是一个字符串)吗?
>
例如,输入=“ ABC_CDE_I like a apple_DEF”,则输出必须为“ I like a apple”。
我尝试了以下代码,但是没有输出预期的结果。
re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)?")
或
re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)*")
非常感谢您的建议。
答案 0 :(得分:2)
您可以使用
SomeManager
请参见regex demo
详细信息
(?:ABC_|CDE_|^)+(\S*?)(?:_DEF|$)
-一个non-capturing group的开头,该alternation operator与用https://docs.python.org/2/library/argparse.html#add-help (?:
分隔的任何子模式匹配:
|
-文字子字符串ABC_
ABC_
-或|
-文字子字符串CDE_
CDE_
-或|
-字符串的开头^
-一次或多次连续出现,并尽可能多()+
是一个贪婪的量词)+
-捕获第1组:零个或多个除空格以外的字符,但由于(\S*?)
惰性量词而导致的字符数尽可能少*?
-字符串((?:_DEF|$)
)的结尾_DEF
或(|
)。