【问题标题】:How can I extract specific patterns from a string?如何从字符串中提取特定模式?
【发布时间】:2021-08-14 06:59:08
【问题描述】:

我目前有一个填充了以下模式的数据集:

我的目标是将每个值放入不同的单元格中。

我已经尝试使用以下公式,但它没有产生我正在寻找的结果。

=SPLIT(D8,"[Stock]",FALSE,FALSE)

对于如何使用 Google 表格获得理想输出的任何指导,我将不胜感激。

提前谢谢你!

【问题讨论】:

    标签: regex google-sheets split


    【解决方案1】:

    我将在您的帖子中假设您的原始数据运行 D8:D。

    如果您想在每个条目中保留[Stock],请在从第 8 行向下为空的列的第 8 行单元格中尝试以下操作:

    =ArrayFormula(IF(D8:D="",,TRIM(SPLIT(REGEXREPLACE(D8:D&"~","(\[Stock\]).","$1~"),"~",1,1))))

    如果您不想在每个条目中保留[Stock],请使用此版本:

    =ArrayFormula(IF(D8:D="",,TRIM(SPLIT(REGEXREPLACE(D8:D&"~","\[Stock\].","~"),"~",1,1))))

    这些公式根本无法使用任何标点符号作为标记。他们还确保您不会以空白(因此无法使用)单元格结束SPLITs。

    【讨论】:

    • 太棒了!这已经很完美了!谢谢!
    • 太棒了。感谢您将帖子标记为“最佳答案”。这使贡献者社区可以轻松查看哪些问题已完全解决,并方便未来有类似问题的网站访问者快速找到最相关的解决方案。
    【解决方案2】:
    1. , 仅用于分隔符
    =ARRAYFORMULA(SPLIT(D8:D,", ",FALSE))
    
    1. , 也用于每个字符串([stock] 将被替换)
    =ARRAYFORMULA(SPLIT(D8:D," [Stock], ",FALSE))
    
    1. , 也用于每个字符串([stock] 不会被替换)
    =ArrayFormula(SPLIT(REGEXREPLACE(M9:M11,"(\[Stock\]), ","$1♦"),"♦"))
    

    【讨论】:

    • 谢谢!但是,我刚刚意识到有时我们的产品带有逗号。例如:香蕉,2kg [库存]。有什么方法可以更改公式以适应分号和逗号?
    • 但是水果名后面有分号。 [Stock] 之后只匹配逗号怎么样?
    • 好的!因此,您将提出以下公式: =ARRAYFORMULA(SPLIT(D8:D,"[Stock], ", FALSE))
    • 添加了两个公式。请检查。
    【解决方案3】:

    使用:

    =INDEX(TRIM(IFNA(SPLIT(D8:D; ","))))
    

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2017-07-19
      相关资源
      最近更新 更多