【问题标题】:Match string between /word to the last slash匹配 /word 到最后一个斜杠之间的字符串
【发布时间】:2021-03-18 13:11:35
【问题描述】:

我想在 /one 和最新的斜杠之间使用正则表达式匹配字符串。 比如:

https://someurl/one/two/three.pdf -> should return one/two
https://someurl/one/two/three/four.pdf -> should return one/two/three
https://someurl/one/two/three/four/five.pdf -> should return one/two/three/four

我试过了

\b(\/dat)\B.*?(?:.)*

【问题讨论】:

标签: c# regex


【解决方案1】:

不确定我是否正确解释了您的问题,但请尝试:

^https:\/\/.*?\/(.*)\/

您可以在其中引用捕获组 1 以获得匹配的结果。见在线demo

  • ^ - 起始线锚点。
  • https:\/\/ - 从字面上匹配“https//”。
  • .*?\/ - 除了换行符之外的 0+ 个字符的延迟匹配到下一个正斜杠。
  • (.*) - 第一个捕获组持有除换行符之外的 0+ 个字符的贪婪匹配;
  • \/ - 最后使用的文字正斜杠。

【讨论】:

  • 它使用 ^https://.?/(.)/ 工作,但是当我使用 c# 测试它时遇到问题。它似乎使用 ECMAScript。它从头开始匹配字符串。
  • @mskuratowski,不确定“它从头开始匹配字符串。”是什么意思。只需引用第一个捕获组。
  • 我的意思是,如果我切换到 ECMA 风格,它就无法正常工作
  • @mskuratowski,请参阅您的问题下方的评论,说明使用“C#”,无需转义正斜杠。这能解决问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2016-07-10
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多