【问题标题】:Regular expression to make non-greedy使非贪婪的正则表达式
【发布时间】:2022-11-28 15:46:24
【问题描述】:

我有这样的文字

EXPRESS      blood| muscle| testis| normal| tumor| fetus| adult
RESTR_EXPR   soft tissue/muscle tissue tumor

现在我只想提取 EXPRESS 行中的最后一项,即 adult

我的模式是:

[|](.*?)\n

代码变得贪婪到muscle| testis| normal| tumor| fetus| adult。我能知道是否有办法解决这个问题吗?

【问题讨论】:

  • |分手怎么样?
  • [^|]*\n 应该为所有内容提供贪婪匹配,直到不包含字符 | 的行末为止,这应该会产生您想要的结果。因此,与其尝试拆分 |,不如在最后一次出现之后获取所有内容(最后一个 | 和换行符之间的最后一个文本)
  • 你的模式真的意味着“尽可能少的(第一的发生)|\n”。

标签: python regex greedy non-greedy


【解决方案1】:

你可以用这个。它节省了你之前的空间,处理 case 并且是非贪婪的:

|s*([^|])*?
?

Tested here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2011-04-27
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多