我有这样的网址:
http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1 ?source= dddd
或者
http://127.0.0.1:81/controller/verbTwo/ NXw4fDF8MXwxfDQ1
我想用粗体提取那部分。主机和端口可以更改为任何内容(当我将其发布到实时服务器时,它会更改)。控制器永远不会改变。而对于动词部分,有两种可能。
任何人都可以帮助我使用正则表达式吗?
谢谢
我有这样的网址:
http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1 ?source= dddd
或者
http://127.0.0.1:81/controller/verbTwo/ NXw4fDF8MXwxfDQ1
我想用粗体提取那部分。主机和端口可以更改为任何内容(当我将其发布到实时服务器时,它会更改)。控制器永远不会改变。而对于动词部分,有两种可能。
任何人都可以帮助我使用正则表达式吗?
谢谢
而不是使用正则表达式,您可以使用的内置功能Uri
Uri uri = new Uri("http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1?source=dddd");
var lastSegment = uri.Segments.Last();
您正在寻找Uri
和Path
类:
Path.GetFileName(new Uri(str).AbsolutePath)
为什么要寻找正则表达式?您可以查找两个字符串元素“verbOne/”或“verbTwo/”并从末尾创建一个子字符串。然后您可以查找其余部分并用“?”减去该部分。
我认为这比正则表达式更快。
克里基特
尽管这里的其他人都认为正则表达式不是最佳解决方案是正确的,因为当解析器已经存在并且由于其专业化而永远不会失败时,它可能会失败,我相信您可以使用以下正则表达式:
(?<=http://127\.0\.0\.1:81/controller/verb(One|Two)/)[a-zA-Z0-9]*