首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在excel RE lookahead中使用星号

在excel RE lookahead中使用星号
EN

Stack Overflow用户
提问于 2014-02-06 23:18:18
回答 2查看 71关注 0票数 0

我想使用正则表达式(在TAG3中使用MUREFUNC )从字符串中获取单个标记(例如TAG3)。

我的字符串类似于

代码语言:javascript
运行
复制
";tag1;  tag2;,,  ; tag3;tag4..." 

其中";“和",”是我的分隔符,空格不会被修剪

如果我想知道"tag3“是否存在,我会检查这个RE:

代码语言:javascript
运行
复制
(?i)(?<=[;,]\s*)(tag3)(?=[;,])

但不起作用。如果我去掉星号(*),它只有在所有标签都使用";“或",”作为分隔符时才有效。你能解释一下为什么我的RE不起作用吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-06 23:35:37

问题是Excel正则表达式不支持可变长度的lookbehinds。大多数正则表达式的风格也不同。(这意味着您的lookbehind断言中不能有量词*)。

只需像这样删除你的quantifer *

代码语言:javascript
运行
复制
(?i)(?<=[;,]\s)(tag3)(?=[;,])

而且它是有效的。或者更好的方法是,将\s设置为Or条件|,如下所示:

代码语言:javascript
运行
复制
(?i)(?<=[;,]|\s)(tag3)(?=[;,])
票数 0
EN

Stack Overflow用户

发布于 2014-02-07 02:25:18

VBscript (Excel)根本不支持后处理。

我建议:

代码语言:javascript
运行
复制
[;,]\s*tag3\s*[;,]

因此,要判断是否存在测试,可以使用正则表达式对象的tag3方法,如下面的代码片段所示。

代码语言:javascript
运行
复制
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Pattern = "[;,]\s*tag3\s*[;,]"
FoundMatch = myRegExp.Test(SubjectString)

哦,刚刚注意到你在使用MoreFunc。

尝试:

代码语言:javascript
运行
复制
=REGEX.COMP(A1,"[;,]\s*tag3\s*[;,]",FALSE)

(编辑后将不区分大小写的选项添加到函数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21606791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档