java - 如何匹配模式正则表达式中 token 的最后一个实例?

标签 java regex pattern-matching

我有以下正则表达式 ^.*?((\yo\b.*?(cut me:)[\s\S]*))$ - 带有 ms 标志

regex101 example

如您所见,它与“yo”的第一个实例匹配。我希望它匹配最接近“cut me”的“yo”的最后一个实例。我需要它是多行点。

如何修改正则表达式以获得以下匹配的输出?

输出(当前以红色匹配):

yo keep this here

Keep this here


yo 
blah, blah, blah cut me:

Allof this here should be deleted

预期输出(我想要以红色匹配的内容):

yo 
blah, blah, blah cut me:

Allof this here should be deleted

最佳答案

也许不要让第一个 .*? 不情愿。

^.*((\yo\b.*?(cut me:)[\s\S]*))$

似乎可以解决你的问题。

此外,由于您使用的是 dotall 标志,因此可以将 [\s\S] 更改为

关于java - 如何匹配模式正则表达式中 token 的最后一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509476/

相关文章:

javascript - 忽略反斜杠后的字符 "\"- javascript

list - 列表模式中函数定义的顺序是否重要

java - 在创建新的 JDO 实体之前,如何确保 Google AppEngine 中不存在该实体?

java - 从脚本填充内存 hsqldb 数据库

javascript - 使用replace()将链接包装在字符串中

r - 从R中的字符串中提取特定关键字

Python:如何在方括号内获取多个元素

java - 如何在 JavaFX 和 Java 8 中禁用 TextArea 自动滚动?

java - TextView 拒绝更改文本

regex - 如何验证 unicode 电子邮件?