Python-在字符串中定位正则表达式匹配的位置?

2024-06-06 05:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用正则表达式搜索RSS提要,以查找是否提到某些单词和短语,然后还要提取匹配两边的文本。例如:

String = "This is an example sentence, it is for demonstration only"
re.search("is", String)

我想知道找到“I s”匹配的位置,以便提取和输出如下内容:

1 match found: "This is an example sentence"

我知道拆分很容易,但我需要知道字符串中匹配的第一个字符的索引是什么,我不知道如何找到


Tags: 文本reanonlyforsearchstringis
3条回答

我认为这个问题还没有完全得到回答,因为所有的答案都只给出一个匹配的例子。OP的问题演示了两个匹配项和一个子字符串匹配项之间的细微差别,子字符串匹配项不应报告,因为它不是单词/标记。

要匹配多个事件,可以执行以下操作:

iter = re.finditer(r"\bis\b", String)
indices = [m.start(0) for m in iter]

这将返回原始字符串的两个索引的列表。

您可以使用.find("is"),它将返回字符串中“is”的位置

或者从re中使用.start()

>>> re.search("is", String).start()
2

实际上它的匹配“是”来自“Th

如果需要对每个单词进行匹配,应该在“is”之前和之后使用\b\b是单词边界。

>>> re.search(r"\bis\b", String).start()
5
>>>

有关python正则表达式的详细信息,请在此处docs

^{} objects have a number of methods帮助您:

>>> m = re.search("is", String)
>>> m.span()
(2, 4)
>>> m.start()
2
>>> m.end()
4

相关问题 更多 >