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个关键字出现在句子的开头和/或行,关键字在中间行。对不起,我不明白。是否要跳过行开始和行结束处的匹配关键字
?你能编辑问题并举例说明吗。