将字符串拆分为具有特定模式和条件的部分

2024-03-09

我有类似下面的大约 5k+ 字符串的数组作为某些应用程序的输出(出于安全原因,我可能不会提供确切的数据,但示例格式与实际数据非常相似):

kasdfhkasdhfaskdfj42345sdsadkfdkfhasdf5345534askfhsad
asdfasdf66sdafsdfsdf4560sdfasdfasdf
sdfaasdfs96sadfasdf65459asdfasdf
sadfasdf8asdfasdas06666654asdfasdfsd
fasdjfsdjfhgasdf6456sadfasdfasdf9sdfasdfsadf

简单地说,我有不间断的字母数字字符串,其中包含5 parts:

[latin letters][1 or more digits][latin letters][1 or more digits][latin letters]

字母部分的长度以及数字的数量是随机的,总字符串长度可能会有所不同several to 2-3 hundreds字符,但模式仍然如上。

实际上我感兴趣的是前导和尾随字符串部分, i.e. [1 or more digits][latin letters][1 or more digits]可能会被扔掉,但应该提取另外 2 个字符串来分隔单元格。

I tried SUBSTITUTE and SEARCH函数,但我仍然可能无法处理随机数量的数字。 VBA 是最后一种理想的方法,但如果纯公式无用,那么它也是可以接受的。此外,该解决方案应该灵活,以便将来可能使用类似的模式 - 因此任何正确的指导/一般方法都将受到赞赏。


如果你不介意使用MS Word而不是 Excel - 对于此类任务有一种非常简单的方法,其中涉及内置Search and Replace日常使用通配符。假设可以在 Word 中打开数据,请执行以下操作:

  1. Press CTRL+H for Replace dialog opening.
  2. Tick Use wildcards option.
  3. 您想要丢弃的数据部分符合以下模式:[0-9]{1,}*[0-9]{1,}- 表示任何数字出现 1 次或多次,其间有任何字符。根据您需要的区域设置;代替, here.
  4. 指定您喜欢的任何字符作为替换,例如^t(选项卡)或;- 用于进一步分割零件。
  5. 进行更换。
  6. 您可以选择使用 Ribbon 将其余部分转换为表格Insert > Table > Convert Text to Table...特征。

您现在所需要做的就是保存/粘贴获得的结果。

实际上,该方法非常强大,并且许多与您类似的常规文本数据解析任务可以快速完成,无需特殊技能和/或编程。为此,您不需要任何第三方工具 - 现在每台 PC 都安装了 Word。

了解有关模式和适用案例的更多信息:

  • 使用通配符查找和替换 http://www.gmayor.com/replace_using_wildcards.htm
  • 使用通配符查找和替换字符 http://word.mvps.org/faqs/general/usingwildcards.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串拆分为具有特定模式和条件的部分 的相关文章

随机推荐