Python 查找句子中字符串的精确匹配项

Python 查找句子中字符串的精确匹配项,python,regex,Python,Regex,我试图使用正则表达式根据精确匹配在句子中查找单词。例如: Sentence1 = 'keyword1 is my keyword, keyworda , keyword- and keyword+' Sentence2 = 'This is my keyword2 , keywordakeyword2andkeyword+' Sentence3 = 'This is my keywordakeywordandkeyword2' 另一个标准是检查行的开头和中间是否出现关键字 句首/行正则表达式

我试图使用正则表达式根据精确匹配在句子中查找单词。例如:

Sentence1 = 'keyword1 is my keyword, keyworda , keyword- and keyword+'
Sentence2 = 'This is my keyword2 , keywordakeyword2andkeyword+'
Sentence3 = 'This is my keywordakeywordandkeyword2'
另一个标准是检查行的开头和中间是否出现
关键字

句首/行正则表达式

regex 1 = re.compile(r"^keyword1\b",re.MULTILINE | re.IGNORECASE)
这是一行正则表达式的中间部分:

regex2 = re.compile(r"(?!^)keyword2\b",re.MULTILINE | re.IGNORECASE)
regex1应该返回关键字1和句子1中的位置

regex2应该返回关键字2(2出现)和句子2中的位置。注意,第二次出现的关键字2在句子2中嵌入在其他字符串之间

regex2应该返回出现在行尾的句子2中的关键字2


我可能可以使用字符串比较,但我还需要获得
关键字的位置。。因此尝试使用regex。

regex 1

您可以将此正则表达式与环视一起使用:

(?<!\S)keyword1(?!\S)

正则表达式详细信息:

  • (?!^)
    :声明我们不在行首
  • keyword2
    :匹配
    keyword2
对于编码,我建议使用
python
中返回的
re.search
函数,然后使用
start()
end()
函数来获取匹配的位置。

您可以使用正则表达式

'keyword[\d]'
regobj = re.compile('keyword[\d]')
编译正则表达式

'keyword[\d]'
regobj = re.compile('keyword[\d]')
要在句子开头找到匹配项,请使用编译对象上调用的match函数。只有在开始时找到匹配的对象,它才会返回匹配的对象

match = regobj.match(sentence1)
要在句子中查找匹配项,请在编译对象上使用finditer函数

it = regobj.finditer(sentence2)
match = it.__next__()
match.start()

start()函数返回匹配项的起始索引,对于迭代器对象上的语句调用next()函数中的另一个匹配项,

为什么不
str.index(“关键字”)
?对不起,在匆忙编辑过程中犯了一些错误…..已修复问题OK,因此如果要匹配字符串
关键字akeyword2和关键字
中的
关键字2
,则它不是完全匹配,它只是一个子字符串。不是真的…当关键字不是行或句子中的第一个单词,并且是句子中的第一个单词时,我需要搜索关键字在句子中的任何位置。正确的regex2.findall(sentence2)应该返回句子2中的两个关键字2,但是regex2.findall(sentence1)不应返回任何值,因为关键字2不存在于句子1中。此为结束。但不考虑关键字出现的位置。即。我需要检查2个关键字出现在句子的开头和/或行,关键字在中间行。对不起,我不明白。是否要跳过行开始和行结束处的匹配
关键字
?你能编辑问题并举例说明吗。