寻找正则表达式或字符串函数
Looking for regexp or string function
我正在解析下面的 URL:
/visitor/browseJobDetails.do?comeFrom=email&jobId=3931052&distance=18&rx=email_NJNY%7CProvider_Featured%7Cjobtitle%7C91942%7CCHILDCARE`
我希望能够获取 "email&jobId=" 和“&distance”之间的整数。所以在这种情况下是 3931052。谁能帮我使用 regexp 或 vertica 字符串函数(substring、instring 等...)
谢谢,
本
正则表达式可以工作,但使用包含在您的语言中的函数要简单得多(例如,PHP 的 parse_url()
,或 Ruby 的URI.parse()
).
无论如何,对于您可以使用的正则表达式,这里有一个示例:
^.*\?comeFrom\=([^&]+)&jobId\=([0-9]+)&distance\=([0-9]+).*$
然后将其替换为 </code> 或 <code>
(取决于您的语言)。
这是正则表达式的作用:
^
匹配字符串的开头
.*
匹配任意字符,任意次数
\?comeFrom\=
按字面匹配 ?comeFrom=
([^&]+)
匹配任何不是 & 一次或多次的字符。也是第一个捕获组
&jobId\=
按字面匹配 &jobId=
([0-9]+)
匹配任意数字一次或多次。也是第二个捕获组
&distance\=
按字面匹配 &distance=
([0-9]+)
匹配任意数字一次或多次。也是第三个捕获组。
.*
匹配任意字符,任意次数
$
匹配字符串结尾
Here's an example of the regex in action 在 regex101.com
当用 </code> 或 <code>
替换字符串时,您将用第二个捕获组替换它,在本例中为 jobId
参数。
这是我的 lookahead/lookbehind 模式版本。它将仅匹配 email&jobId=
和 &distance
之间的数字 - (\d+)
。
regexp_substr(:URL, '.*(?<=email&jobId\=)(\d+)(?=&distance).*', 1, 1, 'c', 1);
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)
我正在解析下面的 URL:
/visitor/browseJobDetails.do?comeFrom=email&jobId=3931052&distance=18&rx=email_NJNY%7CProvider_Featured%7Cjobtitle%7C91942%7CCHILDCARE`
我希望能够获取 "email&jobId=" 和“&distance”之间的整数。所以在这种情况下是 3931052。谁能帮我使用 regexp 或 vertica 字符串函数(substring、instring 等...)
谢谢, 本
正则表达式可以工作,但使用包含在您的语言中的函数要简单得多(例如,PHP 的 parse_url()
,或 Ruby 的URI.parse()
).
无论如何,对于您可以使用的正则表达式,这里有一个示例:
^.*\?comeFrom\=([^&]+)&jobId\=([0-9]+)&distance\=([0-9]+).*$
然后将其替换为 </code> 或 <code>
(取决于您的语言)。
这是正则表达式的作用:
^
匹配字符串的开头
.*
匹配任意字符,任意次数
\?comeFrom\=
按字面匹配 ?comeFrom=
([^&]+)
匹配任何不是 & 一次或多次的字符。也是第一个捕获组
&jobId\=
按字面匹配 &jobId=
([0-9]+)
匹配任意数字一次或多次。也是第二个捕获组
&distance\=
按字面匹配 &distance=
([0-9]+)
匹配任意数字一次或多次。也是第三个捕获组。
.*
匹配任意字符,任意次数
$
匹配字符串结尾
Here's an example of the regex in action 在 regex101.com
当用 </code> 或 <code>
替换字符串时,您将用第二个捕获组替换它,在本例中为 jobId
参数。
这是我的 lookahead/lookbehind 模式版本。它将仅匹配 email&jobId=
和 &distance
之间的数字 - (\d+)
。
regexp_substr(:URL, '.*(?<=email&jobId\=)(\d+)(?=&distance).*', 1, 1, 'c', 1);
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)