gpt4 book ai didi

python - 正则表达式最后删除不必要的字符串

转载 作者:行者123 更新时间:2023-12-01 01:44:49 24 4
gpt4 key购买 nike

Assume that we have:

  1. ABC_ANY_STRING_DEF
  2. ANY_STRING
  3. ANY_STRING_DEF
  4. ABC_CDE_ANY_STRING_DEF

“ABC_”或“CDE_”可以是前缀,也可以不存在。另外,“_DEF”可以是后缀,也可以不存在。

In this case, can I extract ANY_STRING (which is just any set of characters, just a string) between prefix and postfix by using one regular expression?

例如,输入=“ABC_CDE_I like an apple_DEF”,则输出必须是“I like an apple”。

我尝试了以下代码,但它没有输出我期望的结果。

re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)?")

re.compile("(?:ABC_|CDE_)*(\S+)(?:_DEF)*")

提前非常感谢您的建议。

最佳答案

您可以使用

(?:ABC_|CDE_|^)+(\S*?)(?:_DEF|$)

请参阅regex demo

详细信息

  • (?: - non-capturing group 的开始匹配任何用 alternation operator 分隔的子模式| :
    • ABC_ - 文字子串 ABC_
    • | - 或
    • CDE_ - 文字子串 CDE_
    • | - 或
    • ^ - 字符串开头
  • )+ - 一次或多次连续出现,尽可能多( + 是贪婪量词)
  • (\S*?) - 捕获组 1:除空白之外的零个或多个字符,但由于*?而尽可能少。惰性量词
  • (?:_DEF|$) - 要么 _DEF或 ( | ) 字符串结尾 ( $ )。

关于python - 正则表达式最后删除不必要的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51493070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com