【问题标题】:Regex find strings if preceeded by [duplicate]如果前面有 [重复],则正则表达式查找字符串
【发布时间】:2014-05-30 09:07:28
【问题描述】:

我有一个文本文件,其中存在字符串

orderId=123456

字符串可以更改,但格式应始终为 orderId=六个数字。

我想提取这六个数字 我尝试了以下代码

orderId=[0-9]{6}

但我不知道如何删除 orderId= 你能帮忙吗?


更新

下面是一个字符串的例子

"display:none;" name="LanguageSelectionForm" action="http://pippo.com/webapp/wcs/stores/servlet/CabinSelectionView?packageType=onlyCruise&recommendedMaskCommission=false&catalogId=10001&catEntryId=360579&orderId=351026&storeId=10251" method="post" id="LanguageSelectionForm">

我正在使用 Jmeter,这个响应来自 http 响应

【问题讨论】:

  • 你使用什么语言?
  • "orderId=" 将保持不变。你也可以粘贴示例数据吗
  • @user3299274 答案之一是否有助于解决问题,或者您还在为它而苦恼吗?如果一个答案解决了您的问题,请考虑通过单击左侧的复选标记“接受它”,因为这就是声誉系统的工作方式(接受答案会给回答者和您带来声誉)。当然,没有义务这样做。如您所知,您还可以对任何有帮助的答案进行投票。感谢收听我的 20 秒 SO rep 教程。 :)
  • 感谢您的解决方案节省了我的工作日

标签: regex


【解决方案1】:

有多种选择。

Perl、PHP、Ruby 2

\K 与这个简短的正则表达式一起使用,

orderId=\K\d{6}

只会匹配六位数字。

支持lookbehind的风格

(?<=orderId=)\d{6}

同样,只有六位数字会被匹配。

其他口味

orderId=(\d{6})

在这里,整个字符串被捕获,六个数字被捕获在第 1 组中,可以用您的语言进行检查。

正则表达式的工作原理

orderId=\K\d{6}

  • 按字面意思匹配字符串“orderId=”(区分大小写)orderId=
  • 将匹配的文本保留在整个正则表达式匹配之外\K
  • 匹配作为“数字”的单个字符(在任何 Unicode 脚本中为 0–9)\d{6}
    • 正好6次{6}

(?

  • 断言可以匹配下面的正则表达式,匹配在此位置结束(正向后视)(?&lt;=orderId=)
    • 按字面意思匹配字符串“orderId=”(区分大小写)orderId=
  • 匹配作为“数字”的单个字符(在任何 Unicode 脚本中为 0–9)\d{6}
    • 正好6次{6}

orderId=(\d{6})

  • 按字面意思匹配字符串“orderId=”(区分大小写)orderId=
  • 匹配下面的正则表达式并将其匹配捕获到反向引用号 1 (\d{6})
    • 匹配作为“数字”的单个字符(在任何 Unicode 脚本中为 0–9)\d{6}
      • 正好6次{6}

【讨论】:

    【解决方案2】:

    这样的表达式将在第 1 组中返回您需要的数字,前提是输入格式为 anyText=123456

    [a-zA-Z]+=(\d{6})
    

    如果开头的字符串没有改变,那么只需这样做:

    orderId=(\d{6})
    

    【讨论】:

    • 第一部分应始终与 orderId 匹配。
    • 你的问题是The string can change,不是这样吗?
    • OrderID=sixnumber 是固定模式 其他部分可以改变
    • 那么我放在那里的第二个正则表达式将为你工作。
    【解决方案3】:

    在 Jmeter 中使用 Regex Extractor 提取下面提到的字符串:

    "显示:无;" name="LanguageSelectionForm" action="http://pippo.com/webapp/wcs/stores/servlet/CabinSelectionView?packageType=onlyCruise&amp;recommendedMaskCommission=false&amp;catalogId=10001&amp;catEntryId=360579&amp;orderId=351026&amp;storeId=10251&quot; method="post" id="LanguageSelectionForm">

    正则表达式(提取 orderId):“.orderId=(.+?)&.”

    参考链接:http://www.tutorialspoint.com/jmeter/jmeter_regular_expressions.htm

    希望这会有所帮助。

    【讨论】:

    • 或者只是添加括号 orderId=([0-9]{6}) 和模板为 $1$ 希望这会工作
    猜你喜欢
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2015-06-15
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多