我很烦-我怀疑有一个简单的解决方案,但是经过大量研究后,我正在向社区伸出援手。
我在vba中使用regex方法来尝试拆分字符串。我要发生的是,除非字符串中没有其他名称,否则整个字符串将与模式匹配。名称可以通过以下方式描述:
"\s?[a-zA-Z-]*,\s[a-zA-Z]*:\s.*"
我希望该方法将在名称匹配后返回所有内容-直到另一个名称匹配为止。这将是理想的结果。
我要应用该模式的字符串是:
玛丽(Meck):星期五6/14/2019 5:00 PM-10:00 PM CLERKPETRO弗林斯通,弗雷德:星期五6/14/2019 10:00 AM-4:00 PM CLERKPETRO Powers,肯尼:星期五6/14/2019 10:00 PM-11:00 PM
罗德,兰迪:2019年6月15日星期六10:15 AM-11:30 AM SERVCNTR 2019年6月15日星期六11:30 AM-12:45 PM单击并取货2019年6月15日星期六12 :45 PM-2:15 PM SERVCNTR
当我将模式应用于任一字符串时,将返回整个字符串。这不是最佳选择,因为我正尝试使用matchs(0),matches(1)等对名称进行拆分。因此第一个字符串应与以下项匹配:
但是第二个字符串应该与整个字符串匹配(因为它当前是这样),因为该字符串中没有第二个名字。
我该如何解决这个问题?
答案 0 :(得分:1)
这是一种实现方法
\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]+
:
|
$
)
答案 1 :(得分:0)