0

在 Excel VBA 论坛上有人请求帮助匹配如下字符串:

Examples:
ACBD,AC - Match
ACBD,CA - Match
ACBD,ADB - Match
AC,ABCD - Match
ABC, ABD - No Match

规则是字符串匹配的条件是一个字符串中的所有字母都包含在另一个字符串中(即两个字符串中的一个包含另一个字符串的所有字母)

所以我想到一个正则表达式可能是答案,但我是一个绝对的新手,所以你能帮忙吗?

是否可以将两个字符串相互匹配?

谢谢菲利普

4

2 回答 2

1

虽然正则表达式肯定会使检查更容易,但我不认为如果没有额外的编码这是不可能的。您将需要代码来执行以下操作之一:

1) 单独匹配每个字符,然后查看所有匹配是否为真,2) 以所有可能的顺序排列重新排列字符的顺序,并检查每个顺序以查看是否匹配

无论哪种方式,您都需要操作“检查”字符串以涵盖匹配的所有可能要求。

如果您要求“任何这些字符”或“所有这些字符,按此顺序”,您可能无需额外的逻辑就可以做到,但由于您需要“任何这些字符,按任何顺序”,您需要操纵输入。

于 2013-03-12T17:02:15.510 回答
0

我在 VBA 中没有为您提供答案,但可以告诉您需要采取的步骤。

为每个元素创建一个变量,其中字符按字母顺序排序 - 您需要在网上搜索排序函数来执行此操作,因为 VBA 中没有内置函数。

在两个变量的每个字符之间插入一个 .* - 这些是您的正则表达式。您可能希望将此步骤与排序功能合并。

然后,您需要做的就是将数组的第一个元素与从第二个元素创建的正则表达式变量匹配,然后用第一个元素执行第二个。

于 2013-03-12T17:33:32.833 回答