【问题标题】:How to exclude delimiters inside text qualifiers using Regex?如何使用正则表达式排除文本限定符内的分隔符?
【发布时间】:2019-06-14 02:46:02
【问题描述】:

我正在尝试排除文本限定符中的分隔符。为此,我正在尝试使用正则表达式。但是,我是 Regex 的新手,无法完全满足我的需求。如果有人可以帮助我,我将非常感激。

在 Alteryx 中,我将分隔的平面文本文件加载为“非分隔”,并说它没有文本限定符。因此,输入看起来像这样:

  1. "aabb"|ccdd|eeff|gghh
  2. "aa|bb"|ccdd|eeff|gghh
  3. "aa|bb"|ccdd|"ee|ff"|gghh
  4. "aa|bb"|"cc|dd"|"ee|ff"|"gg|hh"
  5. “aabb”|“ccdd”|“eeff”|“gghh”
  6. "aabb"|"ccdd"|"eeff"|"gg|hh"
  7. aabb|ccdd|eeff|gghh
  8. "aa|bb"|ccdd|eeff|"gg|hh"
  9. aabb|cc|dd|eeff|gghh
  10. aabb|"cc||dd"|eeff|gghh
  11. aabb|"c|c|dd"|eeff|gghh
  12. "aa||bb"|ccdd|eeff|gghh
  13. "a|a|b|b"|ccdd|eeff|gghh
  14. "aabb"|ccdd|eeff|"g|g|hh"
  15. "aabb"|ccdd|eeff|"gg||hh"

我想排除文本限定符之间的所有分隔符。

我尝试使用正则表达式将文本限定符中的分隔符替换为空。

到目前为止,我已经为我的目标尝试了以下正则表达式代码:

(")(.*?[^"])\|+(.*?)(")

我使用以下内容进行替换: $1$2$3$4

但是,这不会修复第 11、13、14 和 15 行。

我希望得到以下结果:

  1. "aabb"|ccdd|eeff|gghh
  2. "aabb"|ccdd|eeff|gghh
  3. "aabb"|ccdd|"eeff"|gghh
  4. “aabb”|“ccdd”|“eeff”|“gghh”
  5. “aabb”|“ccdd”|“eeff”|“gghh”
  6. “aabb”|“ccdd”|“eeff”|“gghh”
  7. aabb|ccdd|eeff|gghh
  8. "aabb"|ccdd|eeff|"gghh"
  9. aabb|cc|dd|eeff|gghh
  10. aabb|"ccdd"|eeff|gghh
  11. aabb|"ccdd"|eeff|gghh
  12. "aabb"|ccdd|eeff|gghh
  13. "aabb"|ccdd|eeff|gghh
  14. "aabb"|ccdd|eeff|"gghh"
  15. "aabb"|ccdd|eeff|"gghh"

提前感谢您帮助我!

诚挚的问候, 罗宾

【问题讨论】:

  • 在我的目标 (")(.?[^"])\|+(.?)(") 中,点和问号之间有一个星号。不知何故,星号 * 未显示。
  • 在第 14 行和第 15 行,我希望我的目标是: 14. "g|g|hh" 15. "gg||hh" 但是,目标从第一个 " 符号开始。我不知道如何忽略我的目标中没有封装分隔符的文本限定符。

标签: regex alteryx


【解决方案1】:

我想不出 REGEX 中的正确语法,除非您输入每个可以找到的模式。

但是,一种更简单的方法(可能不如性能)是使用 Text to Columns 选择忽略引号中的分隔符。如果之后您需要将其重新组合到一个单元格中,您可以转置,然后删除分隔符,然后使用 Summarize 来连接每个 RecordID 组。

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2010-11-24
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多