正则表达式匹配一个精确的单词,它的前面或后面只能有空格等

Posted

技术标签:

【中文标题】正则表达式匹配一个精确的单词,它的前面或后面只能有空格等【英文标题】:Regex to match an exact word which can only have spaces etc in front or after it 【发布时间】:2015-08-01 20:00:51 【问题描述】:

我正在尝试找出一个匹配某个单词的正则表达式,其中该单词不能是任何其他“单词”的一部分。

所以我要匹配的这个词的前后只能有空格、制表符或换行符。

我尝试了以下方法:

s\sWORD$
s\sWORD\s
^WORD\s

【问题讨论】:

Word boundaries 单词前后的空格:\sword\s 我将为此使用 Java 中的 Pattern。 【参考方案1】:

我要匹配的这个词的前后只能有空格、制表符或换行符。

这些正则表达式模式之一应该适合您:

(?<=\s|^)WORD(?=\s|$)
(?<!\S|^)WORD(?!\S)

第一个表示WORD 前面必须有空格或行首,后面必须有空格或行尾。

第二个意思是WORD前面不能有非空格,后面也不能有非空格。

Java 示例:

"WORD abc".matches(".*?(?<=\\s|^)WORD(?=\\s|$).*"); // true

"WORD".matches(".*?(?<=\\s|^)WORD(?=\\s|$).*"); // true

"WORD-abc".matches(".*?(?<=\\s|^)WORD(?=\\s|$).*"); // false

"some-WORD".matches(".*?(?<=\\s|^)WORD(?=\\s|$).*"); // false

【讨论】:

实际上我也很长时间没有发布答案,认为所有 OP 需求都是单词边界。但后来我重新阅读问题,发现这个引用的行我试图匹配的这个词在它的前面或后面只能有空格、制表符或换行符。 我得出的结论是WORD-abc不应与\b 匹配。因此需要环顾四周以确保单词仅被空格或开始/结束锚点包围。 好的,那么\b 将不起作用。好答案!

以上是关于正则表达式匹配一个精确的单词,它的前面或后面只能有空格等的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式的学习笔记

正则表达式

js正则表达式

js 正则表达式

js正则表达式大全

pyspark字符串匹配多个精确单词正则表达式的有效方法