首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用regexp来截断可选的尾部

使用regexp来截断可选的尾部
EN

Stack Overflow用户
提问于 2009-03-11 16:45:11
回答 5查看 1.1K关注 0票数 0

哪个正则表达式可以接受以下任何行作为输入

代码语言:javascript
运行
复制
rtsp://server/blabla/bla RTSP/1.0
rtsp://server/blabla/bla/
rtsp://server/blabla/bla
rtsp://server/blabla/bla/streamid=65335 RTSP/1.0

并且总是返回:

代码语言:javascript
运行
复制
rtsp://server/blabla/bla

一般来说,我有一个任意的网址,它总是以"rtsp://"开头,并可选择以EOL"/"" RTSP/1.0""/streamid=65335 RTSP/1.0"结尾。

我只需要获取URL,即没有可选的尾随部分。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-11 16:51:19

这应该会捕获服务器名称。

代码语言:javascript
运行
复制
/rtsp:\/\/([^\/]+)/

从新需求(这将删除尾随):

代码语言:javascript
运行
复制
linux ~ $ echo "rtsp://server/blabla/bla RTSP/1.0
rtsp://server/blabla/bla/
rtsp://server/blabla/bla
rtsp://server/blabla/bla/streamid=65335 RTSP/1.0
" | perl -pe 's/( RTSP\/1.0|\/|\/streamid=65335 RTSP\/1\.0)$//g'
rtsp://server/blabla/bla
rtsp://server/blabla/bla
rtsp://server/blabla/bla
rtsp://server/blabla/bla

下面的代码捕获url:

代码语言:javascript
运行
复制
echo "rtsp://server/blabla/bla RTSP/1.0
rtsp://server/blabla/bla/
rtsp://server/blabla/bla
rtsp://server/blabla/bla/streamid=65335 RTSP/1.0
" | perl -pe 's/(.+?)(?: RTSP\/1.0|\/|\/streamid=65335 RTSP\/1\.0)$/\1/'
rtsp://server/blabla/bla
rtsp://server/blabla/bla
rtsp://server/blabla/bla
rtsp://server/blabla/bla
票数 2
EN

Stack Overflow用户

发布于 2009-03-11 16:51:12

这将完全符合您刚才的要求:

代码语言:javascript
运行
复制
$pattern = '/rtsp:\/\/server\/.*/'
$replace = 'server/9C8CE56C490F2C87';

preg_replace($pattern, $replace, 'rtsp://server/blabla/bla RTSP/1.0');

如果你想在空格之前得到所有的东西,这是可行的:

代码语言:javascript
运行
复制
$pattern = '/([^ ]+).*/'

preg_replace($pattern, '$1', 'rtsp://server/blabla/bla RTSP/1.0');
票数 1
EN

Stack Overflow用户

发布于 2009-03-11 17:15:41

您可以匹配以下内容:

代码语言:javascript
运行
复制
(.*?)(\/streamid\=65335)?(\/)?( RTSP\/1.0)?(\n)?$

并且只读第一组。

根据您使用的语言,使用字符串处理可能会更清楚。例如在Python中:

代码语言:javascript
运行
复制
for suffix in ('\n', ' RTSP/1.0', '/streamid=65335', '/'):
    if url.endswith(suffix):
        url= url[:-len(suffix)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/635383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档