Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
regexp,python:最后一次出现的索引。有负面的看法_Python_Regex - Fatal编程技术网

regexp,python:最后一次出现的索引。有负面的看法

regexp,python:最后一次出现的索引。有负面的看法,python,regex,Python,Regex,我需要获取regexp最后一次出现的索引 在下面的句子中,我需要得到最后一个句号或感叹号的索引,但如果它是短缩写(空格字符句号)的一部分,则不需要 我可以像这样得到第一次出现的索引 t = u"Great buy w. all amenities! Use on all cars. come on in " p = "(?<! .)([.] |! )" i = len(re.compile(p).split(t)[0]) print i t=u“非常好,购买所有便利设施!用于所有汽车。请

我需要获取regexp最后一次出现的索引

在下面的句子中,我需要得到最后一个句号或感叹号的索引,但如果它是短缩写(空格字符句号)的一部分,则不需要

我可以像这样得到第一次出现的索引

t = u"Great buy w. all amenities! Use on all cars. come on in "
p = "(?<! .)([.] |! )"
i = len(re.compile(p).split(t)[0])
print i
t=u“非常好,购买所有便利设施!用于所有汽车。请进”

p=“(?使用迭代所有匹配项,并选择最后一个(使用结果的:

结果仍然是
43
,而不是
55
。您需要匹配标点符号,后跟空格或字符串结尾:

p = re.compile("(?<! .)([.!](?:\s|$))")

p=re.compile((?您可以使用以下内容查找上次出现的
的索引

t = u"Great buy w. all amenities! Use on all cars. come on in "
i = re.search(r"((?<!\s\S)\.|!)[^.!]*$", t)
if i is not None:
    print i.start()
t=u“非常好,购买所有便利设施!用于所有汽车。请进”

i=重新搜索(r)((?如果字符串的最后一个字符是
,则失败-如果可能的话。@MikeM:对于原始正则表达式,它会失败。我的目的是演示如何为任何具有多个匹配项的正则表达式搜索找到最后一个匹配项。很公平,Martijn。我无法抗拒-也许我应该这么做。@MikeM:你知道吗当然是正确的,我已经扩展了我的答案,为这种情况提供了更好的regexp。
t = u"Great buy w. all amenities! Use on all cars. come on in!"
p = re.compile("(?<! .)([.!](?:\s|$))")
>>> import re
>>> t = u"Great buy w. all amenities! Use on all cars. come on in!"
>>> p = re.compile("(?<! .)([.!](?:\s|$))")
>>> last = None
>>> for m in p.finditer(t):
...     last = m
... 
>>> if last is not None:
...     print m.start()
... 
55
t = u"Great buy w. all amenities! Use on all cars. come on in "
i = re.search(r"((?<!\s\S)\.|!)[^.!]*$", t)
if i is not None:
    print i.start()