java - 正则表达式:选择封闭元素内第一个出现的特定单词

标签 java regex

我有一个包含 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/

相关文章:

java - Play Wav 声音示例代码中的资源泄漏

javascript - 哪个更快,XPath 还是 Regexp?

javascript - 匹配通用 URL 的正则表达式

java - 迁移到 AndroidX 后如何更新所有库?

java - 关于内存分配的几个问题

java - Akka 身份验证设计(有限状态机)

Java如何启动IntelliJ IDEA制作的GUI

jQuery 替换 focusout

regex - Spark-SQL 是否支持使用正则表达式规范的 Hive Select All Query with except Columns

regex - 如何在 bash 脚本中匹配正则表达式中的数字