使用正则表达式在文本之间获取文本

时间:2017-06-07 13:48:08

标签: regex

我想在%3A之间提取文本。

以下是示例短语:

http://www.sample.com/res?ccode=1232&note=sampletext&token=12Add-12sre-24Aod-23343-34kdi%3A3232121%3ATVLOPQUI%3AIOOPDA%3AKKKKK%3A&ltr=23232

我尝试了以下表达式:

[&]{1}token[=]{1}([a-zA-Z0-9-%]*)(%3A(.*?)%3A){1}

但预期的词组是: 3232121

然而,它正在捕获无效的东西。

你能建议我,如何以更好的方式做到这一点

2 个答案:

答案 0 :(得分:2)

您可以使用positive lookbehind查找%3A,然后匹配所有数字。

(?<=%3A|:)(\d+)

https://regex101.com/r/IHaXQT/4

答案 1 :(得分:2)

假设params中没有文字&,您可以使用以下模式:

[&?]token=[^&%]*%3A([^%&]+)

请参阅regex demo

<强>详情:

  • [&?]token= - &token=?token=子字符串
  • [^&%]* - 除&%以外的零个或多个字符
  • %3A - %3A子字符串
  • ([^%&]+) - 第1组捕获除%&以外的1个或多个字符。