gpt4 book ai didi

regex - VBA 正则表达式 - 除非重复模式匹配整个字符串

转载 作者:行者123 更新时间:2023-12-01 04:28:14 26 4
gpt4 key购买 nike

我很烦恼 - 我怀疑有一个简单的解决方案,但经过大量研究后,我正在与社区联系。

我在 vba 中使用正则表达式方法来尝试拆分字符串。我想要发生的是整个字符串将匹配模式,除非字符串中有另一个名称。该名称可以通过以下方式描述:

"\s?[a-zA-Z-]*,\s[a-zA-Z]*:\s.*"

我希望该方法会在名称匹配后返回所有内容 - 直到匹配另一个名称。这将是理想的结果。

我应用该模式的字符串是:

梅克,玛丽:2019 年 6 月 14 日星期五下午 5:00 - 晚上 10:00 CLERKPETRO Flinstone,弗雷德:2019 年 6 月 14 日星期五上午 10:00 - 下午 4:00 CLERKPETRO Powers,肯尼:星期五 6/14/2019 晚上 10:00 -- 晚上 11:00

Rhodes, Randy: 2019 年 6 月 15 日星期六上午 10:15 -- 上午 11:30 SERVCNTR 星期六 6/15/2019 上午 11:30 -- 下午 12:45 单击并选择 2019 年 6 月 15 日星期六下午 12:45 -- 下午 2:15 SERVCNTR

当我将模式应用于任一字符串时,将返回整个字符串。这不是最佳选择,因为我试图使用matches(0)、matches(1)等拆分名称。所以第一个字符串应该匹配:
  • 梅克,玛丽:2019 年 6 月 14 日星期五下午 5:00 - 晚上 10:00 CLERKPETRO
  • 弗林斯通,弗雷德:2019 年 6 月 14 日星期五上午 10:00 - 下午 4:00 CLERKPETRO
  • 权力,肯尼:2019 年 6 月 14 日星期五晚上 10:00 -- 晚上 11:00

  • 但是第二个字符串应该与整个字符串匹配(就像当前那样),因为该字符串中没有第二个名称。

    我该如何解决这个问题?

    最佳答案

    这是一种方法
    \b[a-zA-Z-]+,\s?[a-zA-Z]+:.*?(?=\b[a-zA-Z-]+,\s?[a-zA-Z]+:|$)
    https://regex101.com/r/ccj6ea/1

    展开

     \b 
    [a-zA-Z-]+
    ,
    \s?
    [a-zA-Z]+
    :
    .*?
    (?=
    \b
    [a-zA-Z-]+
    ,
    \s?
    [a-zA-Z]+
    :
    |
    $
    )

    关于regex - VBA 正则表达式 - 除非重复模式匹配整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435168/

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