[英]regex to filter out string
我正在使用以下正则表达式过滤掉字符串
^(?!.*(P1 | P2)).*groupName.*$
这里的组名是我在运行时替换的特定字符串。 这个正则表达式已经运行良好。
我有两个需要从这个正则表达式传递的输入字符串。 无法更改正则表达式的^(?..*(P1 | P2))
部分,因此只想在此部分之后更改正则表达式。 它是一个非常通用的正则表达式,在很多地方都在使用,所以我唯一需要更改的地方是正则表达式的groupName
部分。 有没有办法只有2
字符串可以通过这个正则表达式?
1) ADMIN-P3-UI-READ-ONLY
2) ADMIN-P3-READ-ONLY
在正则表达式中, groupName
只是一个变量,它将在运行时替换为所需的字符串。 在这种情况下,我希望传递2
字符串,因此可以将groupName
部分替换为READ-ONLY
但它也会传递1
字符串。
任何人都可以建议如何进行这项工作吗?
您可以使用负向后视:
(?<!UI-)READ-ONLY
所以在 READ-ONLY 之前必须没有 UI-
您可以在模式的最开始添加另一个前瞻性以进一步限制它匹配的内容,因为您的模式属于“匹配一切但”类型。
所以,它可能看起来像
String extraCondition = "^(?!.*UI)";
String regex = "^(?!.*(P1|P2)).*READ-ONLY.*$";
String finalRegex = extraCondition + regex;
图案看起来像
^(?!.*UI)^(?!.*(P1|P2)).*READ-ONLY.*$
匹配
^(?..*UI)
- 除了换行符之外的任何零个或多个字符之后没有UI
从字符串的开头尽可能多^(?..*(P1|P2))
- 除了换行符之外的任何零个或多个字符之后,从字符串的开头起尽可能多的没有P1
或P2
.*READ-ONLY
- 除换行符之外的任何零个或多个字符尽可能多,然后READ-ONLY
.*$
- 字符串的 rest。 请注意,除非您想确保输入字符串中没有多余的行,否则您可以在此处安全地删除$
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.