【问题标题】:Extracting Data from the Cell Through Formula But does not pull some of the data通过公式从单元格中提取数据但不提取部分数据
【发布时间】:2021-03-31 11:57:16
【问题描述】:

我一直在从需要更多结果的单元格中提取数据,但我的公式正在提取一些数据,而不是我需要的全部数据。

如果我能得到帮助,我在下面附上了一张表。

我的公式。

=ArrayFormula(TRIM(REGEXREPLACE(A3:A,"\.\.\.(.*)|\*\*\*","")))
=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT(A3:A, "DONE=>\s*.+\b"))))

https://docs.google.com/spreadsheets/d/1MKC1OWIj64v_mmuNM6mLFY9wMgLwl2mUxm6KnsM5arE/edit#gid=0

【问题讨论】:

  • 试试 1) =ArrayFormula(TRIM(REGEXREPLACE(A3:A,"(\*{3}.*?)(?:\s*?\.{3}DONE=>.*)?(\*{3})$","$1 $2"))) 和 2) =ArrayFormula(IFERROR(TRIM(REGEXEXTRACT(A3:A, "DONE=>.+\b"))))
  • 你的意思是第二个应该返回包含DONE=>的整个字符串? REGEXEXTRACT(A3:A, ".*DONE=>.*")?
  • 啊哈,尝试删除带有\s+(?:-(?:\s+[A-Z]+\?)+|2021\s+COMPLETE -)=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT(REGEXREPLACE(A3:A, "\s+(?:-(?:\s+[A-Z]+\?)+|2021\s+COMPLETE -)", ""), ".*DONE=>.*"))))的那些
  • 现在,我怀疑您只想删除第一个和第二个连字符之间的所有字符,=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT(REGEXREPLACE(A3:A, "^([^-]*-)[^-]+-", "$1"), ".*DONE=>.*"))))
  • 感谢您的样品。你想保留什么?

标签: regex google-sheets find match


【解决方案1】:

您可以使用的正则表达式是

=ArrayFormula(TRIM(REGEXREPLACE(A3:A,"(\*{3}.*?)(?:\s*\.{3}DONE=>.*)?(\*{3})$","$1 $2")))
=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT(REGEXREPLACE(A3:A, "^([^-]*-)[^-]+-", "$1"), ".*DONE=>.*"))))

请参阅 first regex demosecond regex demo。第三个 - .*DONE=>.* - 简单地返回所有包含 DONE=> 的字符串。

详情

  • (\*{3}.*?) - 第 1 组 ($1):三个 * 字符,然后是除换行符之外的任何零个或多个字符,尽可能少
  • (?:\s*\.{3}DONE=>.*)? - 零个或多个空格的可选字符串,***DONE=>,然后是字符串的其余部分
  • (\*{3}) - 第 2 组 ($2):*** 字符串
  • $ - 字符串结束。

^([^-]*-)[^-]+- 匹配

  • ^ - 字符串开头
  • ([^-]*-) - 第 1 组 ($1):除 -- 之外的任何零个或多个字符
  • [^-]+- - 除了- 之外的一个或多个字符,然后是- 字符。

【讨论】:

  • 非常感谢
  • 先生,很抱歉打扰您,但问题仍然存在@Wiktor Stribiżew 我已在上面的附件中突出显示它们。我也尝试过最终解决,但真的很难解决。
  • @Mento 你应该使用^([^-]*- ).*? - ^(.*? - ).*? - ,见this demo
【解决方案2】:

您说“谢谢,但它包含 ? 最后的值”

全新配方满足您的需求
我们把前半部分和后半部分放在一起&

=ArrayFormula(IF(REGEXMATCH(A2:A,"MUKHML"),TRIM((REGEXEXTRACT(A2:A,"^[^-]*")&REGEXREPLACE(A2:A,".*\?|.* COMPLEXIES",""))),""))


像 Wiktor 一样使用这个新公式

=ArrayFormula(IF(REGEXMATCH(A2:a,"MUKHML"),REGEXREPLACE(A2:a,"^([^-]*-)[^-]+-","$1"),""))

【讨论】:

  • 谢谢,但它在最后包含?
  • 您尝试过@Mento 的全新配方来满足您的需求吗?我很好奇它有效。
  • 也许这是必须接受的答案。否则用户会感到困惑。你决定。
  • 是的,如果您先发布此内容,我肯定会这样做。
  • 没问题。但要记住。这不是时间竞赛。关于正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2011-09-07
相关资源
最近更新 更多