为了账号安全,请及时绑定邮箱和手机立即绑定

检索字符串的一部分,从一个单词到另一个单词或到末尾

检索字符串的一部分,从一个单词到另一个单词或到末尾

繁华开满天机 2023-08-09 16:56:21
我的文件中有以下几行:/rootfolder/test/a/b/c/magicword/blabla /rootfolder/test/a/b/c所有这些行都应该与正则表达式模式匹配。另外,我需要找到一个介于/rootfolder和/magicword或 之间的组,如果没有/magicword- 直到最后。因此,对于上面的两行,第一组应该是/test/a/b/c.我已经尝试过/rootfolder(?|(?>(/.*)(?>/magicword).*)|(/.*))(转义/)。它对于一些在线正则表达式验证器来说效果很好,但到目前为止还没有在 Java 中使用它。有没有机会使用Java来制作这样的正则表达式?提前致谢!编辑:工作正则表达式的示例: https: //regex101.com/r/cJkIJH/1。我在 Java 中需要相同的结果。Edit2:感谢下面的答案,看起来/rootfolder(.*?)(?:/magicword.*|$)非常适合我的条件。
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这里不需要任何花哨的东西,只需使用这个正则表达式并使用捕获组#1:

/rootfolder(.*?)(?:/magicword.*|$)

正则表达式演示

非捕获组(?:/magicword.*|$)匹配行尾或/magicword行后的其余部分.*?(惰性匹配)。


查看完整回答
反对 回复 2023-08-09
?
慕森王

TA贡献1777条经验 获得超3个赞

Java不支持分支重置组(?|

您可以使用可选的非捕获来匹配 from /rootfolderto/magicword并在内部使用与之前的捕获组匹配的捕获组来简化表达式/magicword

^/rootfolder(?:(.*?)/magicword)?.*$

正则表达式演示


查看完整回答
反对 回复 2023-08-09
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信