【问题标题】:How to use regex to match numbers in a specified string如何使用正则表达式匹配指定字符串中的数字
【发布时间】:2018-06-27 22:52:22
【问题描述】:

对于字符串: Tm_leo_5776045435d31dc2fcb78afd31c2cdb0=1530134325; User=687685&CouponCode=329472&whoami=109777

我想从上述文本中提取whoami 字段,但我只想要数字部分。现在我正在使用<?(whoami=)\d{6,8},但这将提取字符串whoami=109777,我想摆脱字符串whoami=

【问题讨论】:

  • 你想要(?<=whoami=)\d+
  • 什么是正则表达式库/编程语言?
  • 是java。这是一个打嗝套件扩展。
  • 那么,我的方法应该会奏效。

标签: java regex burp


【解决方案1】:

您可以使用具有正向回溯的正则​​表达式:

(?<=whoami=)[0-9]+

请参阅regex demo。或者,您可能需要 &amp;? 出现在 whoami 之前并使用

(?<=[&?]whoami=)[0-9]+
    ^^^^

another regex demo

(?&lt;=[&amp;?]whoami=),一个正向的后视,检查当前位置左侧紧邻前面是否有whoami= 子字符串&amp;?[0-9]+ 匹配并消耗一个或多个数字并仅返回此文本。

【讨论】:

    【解决方案2】:

    您想将匹配的数字包装在一个组中并从匹配结果中读取该分组。

    &lt;?whoami=(\d{6,8})

    您需要从结果匹配中获得第 1 组。

    第 0 组将是整场比赛,第 1 组将是匹配的号码。

    【讨论】:

    • 当您可以使用后视功能时,为什么要将whoami= 分组?
    • @pkpkpk 好点...我正在更新我的答案,就像你输入的一样。
    • 它对我不起作用。我试过regexe.com,它仍然匹配整个whoami=109777字段..
    猜你喜欢
    • 2023-03-17
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2012-06-05
    • 2013-12-25
    相关资源
    最近更新 更多