【问题标题】:Regex VBA Excel Finding patterns within a cell正则表达式 VBA Excel 在单元格中查找模式
【发布时间】:2015-07-28 13:30:02
【问题描述】:

我目前正在尝试使用带有正则表达式的 excel 和 VBA 拆分数据行以匹配模式。我的所有数据都在一列中,每一行都需要分成 3 部分。

我的问题与正则表达式的使用有关,以及术语彼此之间的确切工作方式以及导致使用下一个术语的原因。

例如,我有一行写着:

"([A-Z]{3})(\W{5,})(.+)(\|\d\.\d)"

我是否应该将其读作“任何 3 个大写字母后跟至少 5 个非单词字符,然后将所有内容不超过,包括条形数字点条(不再赘述)”?还是 .+ 会一直蔓延到我的数据末尾,直到遇到换行符?

我想我想知道一个新术语是否会打断前一个术语(例如使用 .+ 直到上面的“|digit.digit”)。

如果能帮我解决这个问题,我们将不胜感激,在此先感谢您。

编辑:示例

ABC|^-\%!lkaddghlk shfdahah|$^~436346dghdhg|^dgf^356||P|7.7XYZ~^!HYU52

这个只能抓拍吗

ABC|^-\%!lkaddghlk shfdahah|$^~436346dghdhg|^dgf^356||P|7.7

因为最后一项是 |digit.digit 还是会因为 .+ 在第三个捕获组中捕获所有内容?

编辑:

感谢cmets中的每一个人,你们的反馈真的帮了我很大的忙!

【问题讨论】:

  • 关于 Excel 和 VBA 中的正则表达式的最佳帖子:stackoverflow.com/questions/22542834/…
  • 这是一个简洁的小工具,感谢分享。因此,对于第 4 个捕获组是否会中断第 3 个捕获组,我仍然有点不稳定。根据 regex101,我看起来会这样,这是真的吗?
  • 您要解决的具体问题是什么?发布代码、示例输入和预期输出。我们检查您的意思的 regex101 小提琴在哪里?
  • 对不起,我上面的评论是针对不再可见的评论,但这里是 regex101 regex101.com/r/uD4uJ0/1 并且原始帖子已更新。
  • 我不太明白,但是只捕获...因为最后一个词是|digit.digit.+ 将尽可能多地吃掉 greedily 直到满足你的模式的 (\|\d\.\d) 部分(这当然是成功匹配所必需的)。

标签: regex excel vba


【解决方案1】:

感谢评论者的帮助,我现在明白新术语会打断上面代码中的旧术语!

【讨论】:

    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多