【问题标题】:Slash in regular expression in GolangGolang中正则表达式中的斜线
【发布时间】:2019-10-04 08:11:10
【问题描述】:

我有两个链接:

1: /aaa/bbbb/ccccc.htm
2: /xxx/yyy.htm

什么正则表达式能够匹配第二个链接?

我试过了:

^\/.*\/.*[^\/].* 

但是,它匹配所有这些。

【问题讨论】:

  • ^/[^/]+/[^/]+$ ,以/ 开头,然后是non / 字符串,/,以non / 字符串结尾
  • ^(?:\/\w+){2}\.htm这应该是你要找的!

标签: regex go regex-lookarounds regex-group regex-greedy


【解决方案1】:

我猜我们可能想要同时传递两个 URL,在这种情况下,我们将从:

(\/[a-z]+)?(?:\.htm)?

如果您愿意,我们可以添加更多边界。

正则表达式

如果这不是您想要的表达式,您可以在regex101.com 中修改/更改您的表达式。

正则表达式电路

jex.im 可视化正则表达式:

JavaScript 组分解

const regex = /((\/[a-z]+)?(?:\.htm)?)/gm;
const str = `/aaa/bbbb/ccccc.htm
/xxx/yyy.htm`;
const subst = `Group #1: $1\nGroup #2: $2\n`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

如果您只希望通过第二个 URL 而第一个失败,您可以简单地为您的表达式添加一些边界,也许类似于 this 的东西会起作用:

^\/[a-z]+\/[a-z]+.htm$

【讨论】:

  • 对于 Go 问题,不要忘记将 regex101 更改为使用 RE2 引擎而不是 PCRE。我冒昧地更新了链接。
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
相关资源
最近更新 更多