gpt4 book ai didi

excel - 如何匹配重音字符而不是制表符

转载 作者:行者123 更新时间:2023-12-04 21:45:17 25 4
gpt4 key购买 nike

我正在尝试匹配这个用制表符分隔的字符串中的公司名称。
下表在您复制时没有制表符,但我已将制表符替换为两个空格,我认为这可以很好地进行测试。

1025164  HERBEX IBERIA, S.L.U.  KY01  4600292091    
1016379 DRISCOLL´S OF EUROPE B.V. KY01 4600322589
1008809 LANDGARD NORD OBST & GEMÜSE GM KY01 4600347315
1008835 C.A.S.I. : COOPERATIVA PROVINC KY01 4600348112
1019258 SYDGRÖNT EKONOMISK FÖRENING KY02 4600343422
(以上第二栏,7位数字与以上KY0之间)
在现实生活中,列的顺序并不总是相同,因为这是用户偏好。
我只是举了几个例子,但名字也可以包括 /éèáà()´ ,几乎任何东西(可悲)。
我在这里发现了另一个问题 Concrete Javascript Regex for Accented Characters (Diacritics)
当我在该线程中使用正则表达式模式时,例如: "\t([A-zÀ-ÿ0-9\s\.\,\_\-\'\&]+)\t" (我知道一些字符仍然丢失)在两个选项卡之间匹配它变得贪婪并匹配整行。
是否有任何模式可以匹配制表符之间的公司名称中的任何字符(或上面示例中的两个空格)?

最佳答案

我没有返回匹配的部分,而是匹配了所有内容并将其替换为第一个捕获组。希望能帮助到你。

Sub Test()

Dim str As String: str = "1025164" & vbTab & "HERBEX IBERIA, S.L.U." & vbTab & "KY01" & vbTab & "4600292091"

With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(?:^|\t)(?:\d+|KY\d+|([^\t]+))(?=\t|$)"
Debug.Print .Replace(str, "$1")
End With

End Sub
在线查看 demo测试模式:
  • (?:^|\t) - 匹配起始行 anchor 或选项卡。不幸的是 VBA 正则表达式对象 does not support lookbehinds .
  • (?: - 打开一个非捕获组以首先匹配您不想捕获的所有部分:
  • \d+ - 匹配 1+ 位数字;
  • | - 或:
  • KY\d+ - 匹配“KY”后跟 1+ 位数字;
  • | - 或:
  • ([^\t]+) - 嵌套一个捕获组以捕获 1+ 个非标签。
  • ) - 关闭非捕获组。

  • (?=\t|$) - 断言捕获文本的正向前瞻后跟制表符或结束行 anchor 。
  • 关于excel - 如何匹配重音字符而不是制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67688018/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com