正则表达式匹配两个字符串之间最后一次出现的位置

标签 regex

我有一个像这样的字符串:

abcabcdeabc...STRING INSIDE...xyz

我想找到“...STRING INSIDE...”,因此我使用下面的正则表达式来匹配它:

(?<=abc).*(?=xyz)

问题是字符串中存在重复的“abc”,因此它返回“abcdeabc...STRING INSIDE...”,但我只想匹配最后一个“abc”和“xyz”之间的任何内容。这可能吗?如果是,我怎样才能实现这一目标?谢谢。

在这里尝试一下: https://regex101.com/r/gS9Xso/3

最佳答案

尝试这个模式:

.*(?<=abc)(.*)(?=xyz)

前导.*将消耗所有内容,直到最后一个abc,然后该数字将被捕获。

Demo

我们还可以尝试使用以下模式:

.*abc(.*?)xyz

这是第二种模式的演示:

Demo

关于正则表达式匹配两个字符串之间最后一次出现的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070045/

相关文章:

javascript - 用于在域名前面省略部分 URL 的正则表达式

java - 正则表达式获取直到一个字符的值

regex - CodeIgniter 中的路由 : Matching specific length segment

regex - Julia - 使用正则表达式从字符串中提取数字

c++ - Visual Studio regex_iterator 错误?

regex - VSCode Regex 在文件中查找/替换 : can't get a numbered capturing group followed by numbers to work out

python - 如何克服正则表达式标志设置(Python)的问题?

c# - 修复 RegEx 以正确捕获括号内的文本

java - 与此 preg_split 等效的 Java 是什么?

python - 在文本中动态双引号 "keys"以在 python 中形成有效的 JSON 字符串