我有一个正则表达式,我用它来查找给定内容块中的所有单词,不区分大小写,包含在存储在数据库中的词汇表中.这是我的模式:
/($word)/i
Run Code Online (Sandbox Code Playgroud)
问题是,如果我使用/(Foo)/i那么像Food匹配的话.在单词的两边都需要有空格或单词边界.
Foo如果单词在句子的开头,中间或结尾处是单词时,如何修改我的表达式以仅匹配单词?
我将代码简化为我遇到的具体问题.
import re
pattern = re.compile(r'\bword\b')
result = pattern.sub(lambda x: "match", "-word- word")
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
'-match- match'
Run Code Online (Sandbox Code Playgroud)
但我想要
'-word- match'
Run Code Online (Sandbox Code Playgroud)
编辑:
或者是字符串 "word -word-"
我想要
"match -word-"
Run Code Online (Sandbox Code Playgroud) 所以我有str_replace搜索字符串中的"和"并用它替换它&
但是如果有一个单词包含字母"和",例如"Howland"它将替换它Howl&.
我怎样才能使它只搜索单词和.
这是我设置的功能:
function add_ampersand( $string ) {
$string = str_replace( 'and', '&', $string );
return $string;
}
Run Code Online (Sandbox Code Playgroud)
我必须注意,此函数正在URL中使用,因此"和"将在其旁边包含" - ",然后将其转换为空格.