我目前正在使用正则表达式来搜索RSS提要,以查找是否提到了某些单词和短语,然后还要在匹配的任一侧提取文本.例如:
String = "This is an example sentence, it is for demonstration only"
re.search("is", String)
Run Code Online (Sandbox Code Playgroud)
我想知道找到'是'匹配的位置,以便我可以提取和输出这样的东西:
1 match found: "This is an example sentence"
Run Code Online (Sandbox Code Playgroud)
我知道分割会很容易,但是我需要知道匹配的第一个字符的索引在字符串中是什么,我不知道如何查找
YOU*_*YOU 63
您可以使用.find("is")
,它将返回字符串中"is"的位置
或者从re使用.start()
>>> re.search("is", String).start()
2
Run Code Online (Sandbox Code Playgroud)
实际上它的匹配"是"来自"Th is "
如果你需要匹配每个单词,你应该\b
在"是"之前和之后使用,\b
是单词边界.
>>> re.search(r"\bis\b", String).start()
5
>>>
Run Code Online (Sandbox Code Playgroud)
有关python正则表达式的更多信息,请在此处提供文档
dem*_*lem 37
我不认为这个问题已经完全回答了,因为所有的答案只给出单个匹配的例子.OP的问题展示了具有2个匹配的细微差别以及不应报告的子串匹配,因为它不是单词/令牌.
要匹配多个匹配项,可能会执行以下操作:
iter = re.finditer(r"\bis\b", String)
indices = [m.start(0) for m in iter]
Run Code Online (Sandbox Code Playgroud)
这将返回原始字符串的两个索引的列表.
Sil*_*ost 21
re.Match
对象有很多方法可以帮助你:
>>> m = re.search("is", String)
>>> m.span()
(2, 4)
>>> m.start()
2
>>> m.end()
4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
73716 次 |
最近记录: |