我不熟悉VBA中的regex,但必须调试别人编写的代码。
我知道\b
根据单词边界匹配位置,并排除了像-
这样的非单词字符。
但是,我需要代码来匹配某些字符串中的-
。
例如,
匹配search_criteria
中的cats and dogs
:i have cats and dogs
,代码为:
"\b" & search_criteria & "\b"
工作。
但是,这并不匹配:search_criteria
中的dogs -
:dogs - sleeping
不起作用。search_criteria
是一个列表,其中包含不以-
结尾的字符串和以-
结尾的字符串。
就像这样:
dogs -
cats -
cats and dogs
houses
cars
work -
我基本上必须更改代码末尾的\b
,但需要帮助:
"\b" & search_criteria & "\b"
1条答案
按热度按时间isr3a4wc1#
当你需要 adaptive word boundaries(我更喜欢使用这个术语)时,就需要这样做,因为你的所有术语都是以一个word char开头的,所以你可以继续使用
\b
作为左边的边界。右边的边界是
\b
(如果最后一个字符是单词字符)或者 * 根本不检查边界 *,因为您不关心-
后面是单词字符还是非单词字符。可以使用正则表达式转义函数,如
然后将其与自适应单词边界一起使用
传统答案
也可以“手动”构建边界:
这将为每个检查构建正确的模式。
参见测试子组件:
输出: