我想使用正则表达式(在TAG3中使用MUREFUNC )从字符串中获取单个标记(例如TAG3)。
我的字符串类似于
";tag1; tag2;,, ; tag3;tag4..." 其中";“和",”是我的分隔符,空格不会被修剪
如果我想知道"tag3“是否存在,我会检查这个RE:
(?i)(?<=[;,]\s*)(tag3)(?=[;,])但不起作用。如果我去掉星号(*),它只有在所有标签都使用";“或",”作为分隔符时才有效。你能解释一下为什么我的RE不起作用吗?
发布于 2014-02-06 23:35:37
问题是Excel正则表达式不支持可变长度的lookbehinds。大多数正则表达式的风格也不同。(这意味着您的lookbehind断言中不能有量词*)。
只需像这样删除你的quantifer *:
(?i)(?<=[;,]\s)(tag3)(?=[;,])而且它是有效的。或者更好的方法是,将\s设置为Or条件|,如下所示:
(?i)(?<=[;,]|\s)(tag3)(?=[;,])发布于 2014-02-07 02:25:18
VBscript (Excel)根本不支持后处理。
我建议:
[;,]\s*tag3\s*[;,]因此,要判断是否存在测试,可以使用正则表达式对象的tag3方法,如下面的代码片段所示。
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Pattern = "[;,]\s*tag3\s*[;,]"
FoundMatch = myRegExp.Test(SubjectString)哦,刚刚注意到你在使用MoreFunc。
尝试:
=REGEX.COMP(A1,"[;,]\s*tag3\s*[;,]",FALSE)(编辑后将不区分大小写的选项添加到函数
https://stackoverflow.com/questions/21606791
复制相似问题