当前位置:  开发笔记 > 编程语言 > 正文

正则表达式以排除关键字集

如何解决《正则表达式以排除关键字集》经验,为你挑选了3个好方法。

我想要一个表达式,当它遇到诸如"boon.ini"和"http"之类的单词时会失败.目标是采用这个表达式,并能够为任何一组关键字构建.



1> Tim Pietzcke..:
^(?:(?!boon\.ini|http).)*$\r?\n?

(取自RegexBuddy的库)将匹配任何不包含boon.ini和/或http的行.那是你想要的吗?



2> Tim..:

可以使用的替代表达式:

^(?!.*IgnoreMe).*$

^=表示行的开始=表示行
$的结束
(?! Expression)=表示表达式上的零宽度向前看负匹配

^在前面是必要的,否则当评估的负前瞻可能从内部开始的地方/超越"IgnoreMe"文本-并进行匹配,你不希望它太.

例如,如果你使用正则表达式:

(?!.*IgnoreMe).*$

输入"Hello IgnoreMe Please"时,这将导致类似:"gnoreMe Please",因为负向前看发现在'I'之后没有完整的字符串'IgnoreMe'.



3> Justin Polie..:

您应该在代码中执行此操作,而不是否定表达式中的结果.这样,表达式变得非常简单.

\b(boon\.ini|http)\b

true如果boon.ini或http在您的字符串中的任何位置,则会返回.它不会匹配像httpd或httpxyzzy这样的单词,因为它\b或单词边界.如果你愿意,你可以删除它们,它也会匹配它们.要添加更多关键字,只需添加更多管道即可.

\b(boon\.ini|http|foo|bar)\b

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有