【问题标题】:forward slash - regular expression java正斜杠 - 正则表达式 java
【发布时间】:2015-02-27 03:15:33
【问题描述】:

对于字符串 x 我想匹配单词 abc 之间 https:// .... abc .../../..

  • 确定它是否感兴趣

例子

2) 如果字符串是 https:// .... xyz .../abc/mnk --> 字符串不感兴趣

3) 或字符串为 https:// .... xyz .../mnk/abc --> 字符串不感兴趣

用于正斜杠匹配

Regex to match both slash in JAVA

http://bug-bounty.blogspot.com/2013/01/java-regex-forward-slash.html

为了匹配正斜杠,我在 partern 下面尝试了 \ 并且我尝试了

    a) x.matches("https://(.*)oem(.*)/(.*)"
    b) x.matches("https:\\/\\/(.*)oem(.*)\\/(.*)"
    c) x.matches("https://(.*)oem(.*)\/(.*)"  --> errors 
    d) x.matches("https://(.*)oem(.*)/(.*)/(.*)") --> works 

即使认为 d) 工作 a) 和 b) 都失败了条件二 - 这意味着我没有正确理解事情。我错过了什么?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    (以下项目的部分信息与您链接的来源重复)

    • matches 匹配整个字符串。因此 d) 对您的输入起作用,而 c) 则不起作用。
    • 您不需要转义正斜杠。但是,如果您在正则表达式模式中转义字符,则必须将通常编写的每个反斜杠加倍 - 一次用于字符串,一次用于正则表达式解释器。
    • 假设您想匹配 https url 的域部分中感兴趣的子字符串,更健壮的正则表达式可以解决这个问题:

      https://[^/]*oem[^/]*(/.*)?

    如果您事先知道网址中位置部分的(静态)深度,则可以安全地应用模式 d)(准确反映网址中 / 的已知数量)。

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 2015-03-15
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多