Regex 正则表达式最后发生

Regex 正则表达式最后发生,regex,Regex,我在整个字符串中都有,标记,我想通过regex查找最后一个匹配项。要查找第一个匹配项,我有: 我尝试了()+$在字符串末尾找到它,但我不知道我做错了什么。是否仍然可以对正则表达式执行not操作符 示例字符串:helloworld,你太棒了。 所需匹配:尝试使用*组合匹配所需文本之前的文本。请记住,*是贪婪的,因此它将匹配尽可能多的文本 *() 使用提供的字符串: 重新导入 regex=re.compile(r“*()”) regex.search(“你好,世界,你太棒了。”).group(1)

我在整个字符串中都有
标记,我想通过regex查找最后一个匹配项。要查找第一个匹配项,我有:

我尝试了
()+$
在字符串末尾找到它,但我不知道我做错了什么。是否仍然可以对正则表达式执行
not
操作符

示例字符串:
helloworld,你太棒了。


所需匹配:
尝试使用
*
组合匹配所需文本之前的文本。请记住,
*
是贪婪的,因此它将匹配尽可能多的文本

*()

使用提供的字符串:

重新导入
regex=re.compile(r“*()”)
regex.search(“你好,世界,你太棒了。”).group(1)
# ''
或者,您可以使用
findall()
方法,该方法(顾名思义)查找正则表达式的所有匹配项,并返回一个列表

重新导入
regex=re.compile(r“”)
regex.findall(“你好,世界,你太棒了。”)[-1]
# ''

匹配整行,我想是因为
*
?我只想找到
@Jordan是的,但是当你调用
group()
方法并传递
1
(匹配组1)时,只返回标记部分。这不是很昂贵吗,特别是如果我对数百个字符串执行此匹配的话?我想我找到了一个很好的解决方案<代码>(?!*)或
()(?!*)
。它将获得字符串的最后一个实例,然后我们可以使用一个负的前向查找文本,后面不跟任何进一步的文本。发件人:感谢您的帮助,谢谢。@Jordan我更新了我的答案,加入了
findall()
方法的用法。但是,我不知道您使用的是哪种语言,所以无论哪种语言,它都可能是不同的方法。您使用的是哪种语言?“是否有必要对正则表达式执行not运算符?”;不完全是这样,有一个倒排字符类
[^0-9]
。我注意到,“最后一次出现”可以是“字符串反面的第一次出现”,只需对模式进行一些小的调整,这可能会节省您遍历和测试大部分字符串的时间。