首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串不以给定后缀结尾的正则表达式

字符串不以给定后缀结尾的正则表达式
EN

Stack Overflow用户
提问于 2013-05-06 20:09:51
回答 9查看 246.2K关注 0票数 234

我找不到合适的正则表达式来匹配任何不以某些条件结尾的字符串。例如,我不想匹配任何以a结尾的内容。

与匹配的

代码语言:javascript
复制
b
ab
1

这与不匹配

代码语言:javascript
复制
a
ba

我知道正则表达式应该以$结束,尽管我不知道在它之前应该有什么。

编辑:对于我的情况,最初的问题似乎不是一个合法的例子。那么:如何处理多个字符呢?说出任何不以ab结尾的内容

我已经能够通过使用this thread修复这个问题

代码语言:javascript
复制
.*(?:(?!ab).).$

虽然这样做的缺点是,它不匹配一个字符的字符串。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-05-06 20:29:54

你没有给我们语言,但是如果你的regex风格支持look behind assertion,这就是你需要的:

代码语言:javascript
复制
.*(?<!a)$

(?<!a)是一个反向的后处理断言,它确保在字符串(或带有m修饰符的行)的末尾之前没有字符"a“。

查看here on Regexr

您还可以很容易地使用其他字符来扩展它,因为这是对字符串的检查,而不是字符类。

代码语言:javascript
复制
.*(?<!ab)$

这将匹配任何不以"ab“结尾的内容,see it on Regexr

票数 318
EN

Stack Overflow用户

发布于 2013-05-06 20:11:42

使用not (^)符号:

代码语言:javascript
复制
.*[^a]$

如果您将^符号放在括号的开头,则表示“除了括号中的内容之外的所有内容”。$只是指向末尾的锚点。

For multiple characters,把它们都放在自己的字符集里:

代码语言:javascript
复制
.*[^a][^b]$
票数 93
EN

Stack Overflow用户

发布于 2015-11-23 18:24:06

为了搜索不以".tmp“结尾的文件,我们使用以下正则表达式:

代码语言:javascript
复制
^(?!.*[.]tmp$).*$

使用Regex Tester进行测试会得出以下结果:

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

https://stackoverflow.com/questions/16398471

复制
相关文章

相似问题

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