【问题标题】:Regex parsing substring正则表达式解析子字符串
【发布时间】:2016-12-07 15:21:58
【问题描述】:

我有字符串“http://www.google.com/search?q=Regular+Expressions&num=1000” 我一直在尝试在第三个 /(包括)之后获取子字符串,同时在 ?、# 和空格等字符之前停止

到目前为止,我有正则表达式

Pattern regex = Pattern.compile("(?:.*?\\/){3}([^?#]+)", Pattern.DOTALL);

这个正则表达式的工作部分意味着它捕获了第三个 / 之后的所有内容,但我无法让它包含 /。我想包含它,因为我希望能够知道我在哪里找到了我要捕获的子字符串的开头。

对于字符串“http://www.google.com/”,它没有捕获任何内容,所以我无法确定正则表达式的子字符串从哪里开始

如何改进我的正则表达式以包含第三个 / 并在 exclude 之后捕获所有内容?和#?

【问题讨论】:

  • 为什么不用 URL 解析器而不用担心呢?
  • 尝试学习,主要使用正则表达式
  • 关于正则表达式的最好理解之一是,有时它们不是工作的最佳工具,在这些情况下使用它们会给自己造成可避免的痛苦。它不包括第三个/,因为它是您的“序言”匹配的一部分。

标签: java regex


【解决方案1】:

试试这个模式:

.*\/\/.*(\/[^?#]+)

在 parans 中移动 / 会将其添加到捕获组中。

https://regex101.com/r/yZZUDc/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多