首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤掉字符串的正则表达式

问过滤掉字符串的正则表达式
EN

Stack Overflow用户
提问于 2021-01-28 19:21:24
回答 2查看 49关注 0票数 0

我正在使用下面的regex过滤掉字符串

代码语言:javascript
复制
^(?!.*(P1 | P2)).*groupName.*$

这里的组名是我在运行时替换的特定字符串。这个正则表达式已经运行得很好。

我有两个输入字符串需要从这个正则表达式中传递。无法更改正则表达式的^(?!.*(P1 | P2))部分,因此只想在此部分之后更改正则表达式。它是一个非常通用的正则表达式,在很多地方都在使用,所以我唯一需要修改的地方就是正则表达式的groupName部分。有没有办法只有2字符串可以通过这个正则表达式?

代码语言:javascript
复制
1) ADMIN-P3-UI-READ-ONLY
2) ADMIN-P3-READ-ONLY

在正则表达式中,groupName只是一个变量,它将在运行时被替换为所需的字符串。在这种情况下,我希望传递2字符串,因此可以用READ-ONLY替换groupName部件,但它也会传递1字符串。

有没有人能对此提出建议,如何让它工作?

EN

回答 2

Stack Overflow用户

发布于 2021-01-28 19:42:48

你可以使用负lookBehind:

代码语言:javascript
复制
(?<!UI-)READ-ONLY

因此,在只读之前不能有UI

票数 0
EN

Stack Overflow用户

发布于 2021-01-29 01:43:10

您可以在模式的最开始添加另一个先行检查,以进一步限制它匹配的内容,因为您的模式属于"match-everything-but"类型。

因此,它可能看起来像

代码语言:javascript
复制
String extraCondition = "^(?!.*UI)";
String regex = "^(?!.*(P1|P2)).*READ-ONLY.*$";
String finalRegex = extraCondition + regex;

该模式将如下所示

代码语言:javascript
复制
^(?!.*UI)^(?!.*(P1|P2)).*READ-ONLY.*$

匹配

  • ^(?!.*UI) -从string
  • ^(?!.*(P1|P2))开始尽可能多地在除换行符之外的任何零个或更多字符之后进行P1 -从READ-ONLY
  • .*$开始尽可能多地在除换行符之外的任何零个或多个字符之后进行UI -尽可能多地在除换行符之外的任何零个或多个字符之后进行P1,然后是READ-ONLY
  • .*$-字符串的其余部分。注意:除非您想确保输入字符串中没有多余的行,否则您可以在此处安全地删除$。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65936101

复制
相关文章

相似问题

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