我在文件中的以下几行:
/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.*|$)
完全适用于我的条件。
分析解答
你不需要任何幻想这里只是用这个表达式与捕获组#1的工作:
/rootfolder(.*?)(?:/magicword|$)
Non-capturing组(?:/magicword|$)
匹配.*?
(懒惰匹配)后线或/magicword
结束。