首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找regexp或string函数

查找regexp或string函数
EN

Stack Overflow用户
提问于 2015-02-03 23:59:03
回答 2查看 197关注 0票数 0

我正在解析一个URL,如下所示:

代码语言:javascript
复制
/visitor/browseJobDetails.do?comeFrom=email&jobId=3931052&distance=18&rx=email_NJNY%7CProvider_Featured%7Cjobtitle%7C91942%7CCHILDCARE`

我希望能够抓住"email&jobId=“和”&距离“之间的整数。所以在这个案子里是3931052。有人能帮我使用regexp或vertica字符串函数(子字符串、指令等)吗?

谢谢,本

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-04 01:25:58

正则表达式可以工作,但是使用语言中包含的函数(例如,PHP的parse_url()或Ruby的URI.parse())要简单得多。

无论如何,对于您可以使用的正则表达式,下面是一个示例:

代码语言:javascript
复制
^.*\?comeFrom\=([^&]+)&jobId\=([0-9]+)&distance\=([0-9]+).*$

然后将其替换为$2\2 (取决于您的语言)。

下面是正则表达式所做的工作:

^与字符串的开头匹配。

.*匹配任何字符,任意次数

\?comeFrom\=匹配字面上的?comeFrom=

([^&]+)与任何不是&的字符匹配一次或多次。它也是第一个捕获组。

&jobId\=匹配字面上的&jobId=

([0-9]+)与任何一个或多个数字匹配。它也是第二个捕获组。

&distance\=匹配字面上的&distance=

([0-9]+)与任何一个或多个数字匹配。它也是第三个捕获组。

.*匹配任何字符,任意次数

$与字符串的末尾匹配。

regex101.com上的下面是执行中的正则表达式的一个示例

当用$2\2替换字符串时,您将用第二个捕获组替换它,在本例中,该组将是jobId参数。

票数 1
EN

Stack Overflow用户

发布于 2015-02-06 23:18:01

这是我的版本,带有展望/查找模式。它将匹配一个数字- (\d+),它仅在email&jobId=&distance之间。

代码语言:javascript
复制
regexp_substr(:URL, '.*(?<=email&jobId\=)(\d+)(?=&distance).*', 1, 1, 'c', 1);
代码语言:javascript
复制
daniel=> select regexp_substr($$/visitor/browseJobDetails.do?comeFrom=email&jobId=3931052&distance=18&rx=email_NJNY%7CProvider_Featured%7Cjobtitle%7C91942%7CCHILDCARE`$$, '.*(?<=email&jobId\=)(\d+)(?=&distance).*', 1, 1, 'c', 1);
 regexp_substr
---------------
 3931052
(1 row)

下面是一个例子:https://regex101.com/r/xC8fA1/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28311116

复制
相关文章

相似问题

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