首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何匹配整词而忽略特殊字符

如何匹配整词而忽略特殊字符
EN

Stack Overflow用户
提问于 2016-01-09 02:36:43
回答 1查看 38关注 0票数 2

对于这个例子,假设我们有以下关键字:

代码语言:javascript
运行
复制
banana
apple.
apple-
apple  party #(double space)    
apple pie
sweet apple pie
apple
apple 34

如何使regex只匹配“苹果”字,没有特殊的字符和多个空格?因此,从上面的例子来看,它只匹配最后的4,忽略前4。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-09 02:44:06

试试这个:

代码语言:javascript
运行
复制
\bapple\b(?!\s{2}|\S)

Demo

这需要一个单词边界(\b)在单词之前和后面,并排除匹配,后面跟着两个空格或一个非空白字符。

编辑:您在评论中表示要匹配整行的。这很容易;只需在上面的正则表达式之前和后面添加.*,如下所示:

代码语言:javascript
运行
复制
.*?\bapple\b(?!\s{2}|\S).*

Demo (我在第一个.*中添加了一个?以避免由于回溯而导致的性能问题)。

编辑2:基于附加注释的:您还希望排除apple . com这样的匹配。这有点棘手,但是这个正则表达式可以做到:

代码语言:javascript
运行
复制
(?!.*?\bapple\b(?:\s{2}|\s*[.\/,<>-])).*?\bapple\b.*

Demo。这个方案是通过使用负前瞻性的方法来实现的。组(?!.*?\bapple\b(?:\s{2}|\s*[.\/,<>-]))表示行不能包含(a) 2+空格或(b)后面的集合./,<>-中的任意数量的空格和字符的2+。这应该能做你想做的。

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

https://stackoverflow.com/questions/34689126

复制
相关文章

相似问题

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