我有一个像这样的字符串:
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/