正则表达式匹配部分网址

时间:2017-03-07 11:52:51

标签: regex

我是新来的,也是正则表达的新手。

我正在寻找一个正则表达式规则来匹配字符串的第一部分,如:

  1. 开始/一个/ preend /结束
    • 开始/ A
  2. 开始/ A /的 XYZ / preend /结束
    • 开始/ A
  3. 开始/ A / B / preend /结束
    • 启动/ A / B
  4. 开始/ A / B /的 XYZ / preend /结束
    • 启动/ A / B
  5. 启动/ A / B / C / preend /结束
    • 启动/ A / B / C
  6. 启动/ A / B / C /的 XYZ / preend /结束
    • 启动/ A / B / C
  7. start is static word, end is static word, xyz is static word which may or may not be there, preend is variable word, but it is always there before end, a,b,c are variable words

    这样的正则表达规则是否可行?我只能用#34; xyz"这个词来获得版本。工作或没有单词" xyz"工作,但我无法弄清楚普遍规则。

    我从这开始: (.*)\/[^\/]*\/end$然后对(xyz)?进行了实验,但未找到普遍规则。

    提前感谢您提供任何帮助和线索。

1 个答案:

答案 0 :(得分:1)

您可以使用非贪婪量词*?和前瞻断言(?=...)来测试前进。这样,非贪婪量词将逐个取字符,直到前瞻中的子模式成功为止:

^start/.*?(?=/xyz/|/[^/]*/end$)

demo

(根据模式分隔符,如果有的话,您可能必须转义斜杠)