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

Regex 使用正则表达式获取文本之间的文本,regex,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} 但预期的短语是:32

我想提取%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

然而,它捕获的是无效的东西

你能不能建议我,如何更好地做到这一点

你可以使用a来查找
%3A
,然后匹配后面的所有数字

(?<=%3A|:)(\d+)
(?您可以使用来查找
%3A
,然后匹配之后的所有数字

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

(?假设参数中没有文本
&
,则可以使用以下模式:

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

详细信息

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

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

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

详细信息

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

此处是否仅限于正则表达式?感谢您的回复Wikitor,是的,此处没有选项。我必须使用正则表达式,例如:
(?谢谢回复hd,它不符合我的要求你使用的是哪种风格的regex?你在这里只使用regex吗?谢谢回复Wikitor,是的,这里没有选择。我必须使用类似:
(?谢谢回复hd,它不符合我的要求你在使用哪种风格的regex?谢谢Wiktor的快速帮助:)感谢Wiktor的快速帮助:)