【发布时间】:2019-09-11 18:05:52
【问题描述】:
我正在尝试使用正则表达式根据完全匹配来定位句子中的单词。例如:
Sentence1 = 'keyword1 is my keyword, keyworda , keyword- and keyword+'
Sentence2 = 'This is my keyword2 , keywordakeyword2andkeyword+'
Sentence3 = 'This is my keywordakeywordandkeyword2'
另一个标准是检查keyword 在行首和中间是否出现。
句子/行正则表达式的开头
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
我可能可以使用字符串比较,但我还需要获取keyword 的位置......因此尝试使用正则表达式。
【问题讨论】:
-
为什么不
str.index("keyword")? -
抱歉,匆忙编辑中出现了一些错误.....已解决问题
-
好的,所以如果你想匹配字符串
keywordakeyword2andkeyword中的keyword2,那么它不是完全匹配,它只是一个子字符串。 -
不是真的...当关键字不是行或句子中的第一个单词并且是句子中的第一个单词时,我需要在句子中的任何位置搜索关键字的出现
-
正确的 regex2.findall(sentence2) 应该从句子 2 中返回两个关键字 2,但是 regex2.findall(sentence1) 不应该返回任何值,因为关键字 2 在句子 1 中不存在