我需要匹配一个字符串,以便它不会在一个单词中意外匹配。例如,让我们说我要匹配字符串“de”。我希望它与这些字符串匹配:
"de"
" de"
"de "
" de "
" de "
"I like the term de very much"
这样的事情,但我不希望它匹配像
这样的字符串"dead"
" delaware"
"This is delaware"
和ETC.任何人都可以用这样的正则表达式帮助我吗?
答案 0 :(得分:2)
我认为/^\s*de\s*$/
应该适用于匹配' de '
等字符串。在这种情况下,^
匹配字符串的开头,$
- 字符串结尾,\s*
- 空格字符的任何序列(可能为空),de
实际上就是你正在寻找。
但是对于一般情况,词边界有特殊符号 - \b
。参见示例:
/de/ =~ ' de ' # matches
/de/ =~ ' rder ' # matches as well, but you don't want that
/\bde\b/ =~ 'de' # matches
/\bde\b/ =~ 'qwe de rew' # matches as 'de' is a separate word
/\bde\b/ =~ ' rder ' # doesn't match as 'de' is not surrounded by word
# boundaries so it's not a separate word
答案 1 :(得分:2)
您希望匹配单词de
。为此,断言它以字边界开始和结束:
\bde\b
我注意到你的例子只包含只包含一个单词的字符串(带有可选的前导和尾随空格)。但是你的问题没有规定匹配的字符串必须只包含一个单词,因此不清楚这是否是一个要求。上面的正则表达式将匹配包含单词de
的字符串,无论字符串中是否还有其他单词。例如,此字符串将匹配:
"here come de judge"
此字符串不会:
"here come der judge"