我有一个包含 url 路径的字符串:
...
/test/section/1.png
"/test/section/test/2.png" "/test/section/test/2.png"
(/test/section/test/3.png)
...
我想获取引号或括号中包含的 url 元素的所有第一次“测试”出现。
到目前为止,我已经完成了使用 '"' 或 '(': 获取每个字符串的第一次出现:
(\(|\")(\/orbeon\/)
<小时/>
匹配项以粗体显示。
当前输出:
<小时/>/test/section/1.png
"/test/ section/test/2.png" "/test/ section/test/2.png"
(/test/ section/test/3.png)
期望的输出:
/test/section/1.png
" /test/ section/test/2.png" " /test/ section/test/2.png"
( /test/ section/test/3.png)
如何排除匹配单词之前的字符?
小心!我只想要每个包含的 url 路径中出现的第一个单词:
极端情况:/test/section/test/2.png
在 java 中使用此正则表达式
最佳答案
您当前的(\(|\")(\/orbeon\/)
正则表达式匹配(
或"
进入组 1 和 /orbeon/
进入第 2 组。
因此,当您执行matcher.find()
时,您需要使用 matcher.group(2)
访问组 2 .
否则,使用后视:Pattern.compile("(?<=[(\"])/orbeon/")
,您将可以通过 matcher.group()
访问必要的文本。或matcher.group(0)
。 (?<=[(\"])
正向回顾将断言 (
的存在或"
之前/orbeon/
,如果不存在,则不会有任何匹配。
关于java - 正则表达式:选择封闭元素内第一个出现的特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43342814/