Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如果多个单词存在于字符串中,则正则表达式将查找它们的所有匹配项和实例_Regex_Vba_Excel_Vbscript - Fatal编程技术网

Regex 如果多个单词存在于字符串中,则正则表达式将查找它们的所有匹配项和实例

Regex 如果多个单词存在于字符串中,则正则表达式将查找它们的所有匹配项和实例,regex,vba,excel,vbscript,Regex,Vba,Excel,Vbscript,这是本书的延续 我正在尝试将正则表达式与vbScript或VBA一起使用,并在字符串中查找所有出现的特定单词。这个字符串来自一个大的配置文件,包含其他数据,但我可以用另一个RegEx命令解析出我需要的字符串块。在我下面的测试例程中,它找到每个OR'd单词的第一次出现并停止。我正在尝试返回找到的每个单词的所有出现和实例,如果它们存在于字符串中。我只是不知道如何使它循环或继续检查 我还为以下内容创建了一个RegEx Tester链接: 我试图实现的目标如下: 'Expected f_Match.S

这是本书的延续

我正在尝试将正则表达式与vbScript或VBA一起使用,并在字符串中查找所有出现的特定单词。这个字符串来自一个大的配置文件,包含其他数据,但我可以用另一个RegEx命令解析出我需要的字符串块。在我下面的测试例程中,它找到每个OR'd单词的第一次出现并停止。我正在尝试返回找到的每个单词的所有出现和实例,如果它们存在于字符串中。我只是不知道如何使它循环或继续检查

我还为以下内容创建了一个RegEx Tester链接:

我试图实现的目标如下:

'Expected f_Match.SubMatches Output in a loop
'GoodMatch1
'KeyWord_2
'A
'B
'C
'KeyWord_3
'1
'A
'2
'B
'KeyWord_1
'1
'2
'3

或者类似的可行的东西。。。如果需要其他信息,请告诉我。非常感谢您的帮助。谢谢大家!

好吧,如果这次您不介意不捕获整个块,您可以使用我为您前面的问题编写的前两个正则表达式的修改:

(?:(?:edit (\S+))|(KeyWord_1|KeyWord_2|KeyWord_3)|\b([0-9A-Z])\b)(?=(?:(?!edit[^;]+;mode )[\s\S])*?exit)

是一个大群体,分为3种可能的匹配:

(?:编辑(\S+)
以获取编辑名称

(关键字1 |关键字2 |关键字3)
获取关键字

\b([0-9A-Z])\b
获取字母/数字


我认为您可以使用之前的“整块”正则表达式来首先提取块,这一个用来获取单个关键字。不幸的是,“block regex”无法进行单独捕获,因为不允许重叠匹配,而且由于您已经匹配了整个块,因此您需要为每个要获取的部分创建一个捕获组,这不太实际。。。除非有我还不知道的方法=P

好吧,如果这次您不介意不捕获整个块,您可以使用我为您前面的问题编写的前两个正则表达式的修改:

(?:(?:edit (\S+))|(KeyWord_1|KeyWord_2|KeyWord_3)|\b([0-9A-Z])\b)(?=(?:(?!edit[^;]+;mode )[\s\S])*?exit)

是一个大群体,分为3种可能的匹配:

(?:编辑(\S+)
以获取编辑名称

(关键字1 |关键字2 |关键字3)
获取关键字

\b([0-9A-Z])\b
获取字母/数字


我认为您可以使用之前的“整块”正则表达式来首先提取块,这一个用来获取单个关键字。不幸的是,“block regex”无法进行单独捕获,因为不允许重叠匹配,而且由于您已经匹配了整个块,因此您需要为每个要获取的部分创建一个捕获组,这不太实际。。。除非有我还不知道的方法=P

你又一次帮了大忙!我将不得不修改一点,并测试我的实际配置。如果我遇到任何打嗝,我会回敬你的。这很有魅力:你帮了我很大的忙!我将不得不修改一点,并测试我的实际配置。如果我遇到任何打嗝,我会回复的。效果很好:D
(?:(?:edit (\S+))|(KeyWord_1|KeyWord_2|KeyWord_3)|\b([0-9A-Z])\b)