首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个匹配由{}包围的单词的正则表达式不起作用

这个匹配由{}包围的单词的正则表达式不起作用
EN

Stack Overflow用户
提问于 2019-06-23 19:32:03
回答 1查看 252关注 0票数 0

因此,下面是我的正则表达式,用于匹配“定义”或“定义”之后的单词:

代码语言:javascript
复制
((?<=define |define: )\w+)

这一部分工作得很好。但当我添加它也应该匹配{}之间的单词的部分时,如果可以,它将匹配所有内容。

代码语言:javascript
复制
((?<=define |define: )\w+)|([^{][A-Z]+[^}])

The regex with the examples

我注意到的一件事是,当我一开始添加^时,{然后它毁了一切,我不明白为什么。

EN

回答 1

Stack Overflow用户

发布于 2019-06-23 20:32:10

您正在使用被否定的字符类,就像我们使用正后视(?<=)和正前视(?=)一样。它们从根本上是不同的,并且与后视或前视相反,字符类使用字符。

因此:

  • [^{][A-Z]匹配前面有{以外的字符的大写字母。
  • [A-Z][^}]匹配后跟}以外的字符的大写字母。

因此,如果您尝试用正则表达式[^{][A-Z]+[^}]匹配{OO}中的字母,那么正则表达式将不匹配任何内容是完全正常的,因为您有两个字母,一个前面是{,另一个后面是}

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

https://stackoverflow.com/questions/56723437

复制
相关文章

相似问题

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