【问题标题】:Regex for finding the first single slash and last slash用于查找第一个单斜杠和最后一个斜杠的正则表达式
【发布时间】:2020-05-15 13:58:11
【问题描述】:

这是我的 url 结构。

abc.com/SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA/index.html

这些类型的模式在 php 中使用 mkdir() 产生问题 SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR./ (./ considers directory)

我想要实现的是 获取第一个单斜杠和结束单斜杠之间的内容

SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA

并替换 .和 @ SOLAPUR_JANATA_SAHKARI_BANK_LTD@SOLAPUR/MAHARASHTRA/

请为它推荐正则表达式。

提前致谢。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。请提供您的代码以获取更多上下文,并向社区展示您迄今为止所尝试的内容。另外,请查看stackoverflow.com/help/how-to-ask
  • 正则表达式并不总是答案。为什么不用斜杠分割字符串,替换索引 1+ 中的点,然后用斜杠将其重新连接起来。
  • 是的,可以做到。但是我的用例会有其他问题。这就是我探索正则表达式的原因。 @TrentonTrama

标签: regex regex-lookarounds regex-negation regex-group regexp-replace


【解决方案1】:

您可以尝试这样的匹配: ^.*?\/(.+)\.(.+\/).*$

替换为\1@\2

在这里试试:https://regex101.com/r/i0WM2O/2

解释:

  • ^.*?\/:匹配输入的开头以及直到并包括第一个 / 的所有内容。 .*? 是非贪婪的(懒惰的),所以它只会匹配到第一个 /
  • (.+)\. :在第一个 /(上图)之后捕获所有内容,直到 .
  • (.+\/):组捕获 . 之后的所有内容,包括最后一个 /+ 默认是贪婪的,所以.+ 将捕获任何匹配的/,直到最后一个。
  • .*$: 匹配剩下的东西

第一组在第一个/.之间捕获,例如SOLAPUR_JANATA_SAHKARI_BANK_LTD

第二组在. 和包括最后一个/ 之间捕获,所以SOLAPUR/MAHARASHTRA/

所以\1@\2 的结果是SOLAPUR_JANATA_SAHKARI_BANK_LTD@SOLAPUR/MAHARASHTRA/

【讨论】:

  • 感谢您的帮助和快速回复。
【解决方案2】:

RegExp 可以工作 => \/(.*)\/

let input = 'abc.com/SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA/index.html';

output = input.replace(/\/(.*)\//, 'foo');

console.log(`output: ${output}`);

【讨论】:

  • 感谢您的解决方案!感谢您的帮助。
猜你喜欢
  • 2022-01-27
  • 2011-04-19
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
相关资源
最近更新 更多