Regex:匹配VBA Excel函数中的所有内容,但不匹配特定的多字母字符串(正则表达式、激励、任何内容,但不是Visual Basic) [英] regex: match everything, but not a certain multiletter string within VBA Excel function (regular expression, inspite of, anything but, visual basic)
问题描述
朋友们,这是另一个关于regex:匹配所有内容,但不是...,但到目前为止,似乎不符合我的简单问题。
我需要对Excel函数进行编程,以将字符串与其前面的枚举数分开(类似于此处所做的操作:VBA regex: extract multiple strings between strings within Excel cell with custom function)
我的第一个简单字符串是:";1 Rome; 2 London; 3 Wembley Stadium
";
我的第二个字符串看起来像:";1.1 Winner; 2.1 Looser; 3.3 Penalties (always loose, dam)
";
我只需要提取名字,而不需要提取级别(例如,";Rome; London; Wembley Stadium
和Winner; Looser; Penalties (always loose, dam)
";)。
使用正则表达式测试器(https://extendsclass.com/regex-tester.html),我可以通过以下方式简单地匹配相反的情况:
([0-9]+s*)
它给了我:
1
罗马,2
伦敦,3
温布利体育场
但如何扭转这种局面呢?我尝试了如下内容:
[^0-9 |;]+[^0-9 |;]
,但也不包括我要保留的空格(例如,在逗号之后以及在温布利和体育场之间,1Rome,
2London,
3Wembley
Stadium
&))。我想需要以某种方式将<2-13]>";确定为一个连续的字符串。我尝试了各种方括号、引号s*
,但没有任何JET。
注意:我正在Visual Basic环境中工作,不允许使用lookbehinds!
注意:我的解决方案需要尽可能跨Excel版本兼容!
推荐答案
我尝试将数值和句点作为一个连续字符串&([^d|.])
求反。这将在某些地方保留两个空间。
分组讲解regexr
要删除这些双空格,请尝试使用([^d|.])(?<!; )
,我只是在后面添加了一个负面的外观,可能并不是所有的正则表达式解释器都支持它。
这篇关于Regex:匹配VBA Excel函数中的所有内容,但不匹配特定的多字母字符串(正则表达式、激励、任何内容,但不是Visual Basic)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!