正则表达式,用于查找字符串中最后一次出现的字符串

时间:2017-08-22 04:33:27

标签: regex

我使用正则表达式来解析一些记录,我很难弄清楚如何构造正则表达式来找到下面的场景。

示例记录: 这是一个测试字符串425 = UA113456 jkjkj 425 = AB1234X 这是一个测试字符串795 = 12这是一个测试字符串。

要求。找到标签795 = 12并搜索返回以找到标签425的值。在这种情况下,返回值应为AB1235X。 注意:可能有多个425 =标签,就像在这个例子中有两个,但我需要标签的值,它在795 = 12之前。

这就是我到目前为止^。* 425 =(。*?)795 = 12但不完全是我需要的。

我将不胜感激。

2 个答案:

答案 0 :(得分:0)

假设所有代码均为数字,请使用此模式(\d+)=(\S+)[^=]*795=12 DemoDemo

(           # Capturing Group (1)
  \d        # <digit 0-9>
  +         # (one or more)(greedy)
)           # End of Capturing Group (1)
=           # "="
(           # Capturing Group (2)
  \S        # <not a whitespace character>
  +         # (one or more)(greedy)
)           # End of Capturing Group (2)
[^=]        # Character not in [=] Character Class
*           # (zero or more)(greedy)
795=12      # "795=12"

或根据您的尝试,使用此425=(\S+)[^=]*795=12

答案 1 :(得分:0)

虽然它假定支持环绕声断言,但这仍然有效:

(?<=425=)\b(\w+)\b(?=[a-zA-Z\s]*795=12)
  • \ b(\ w +)\ b匹配单词
  • (?&lt; = 425 =)前面是425 =
  • (?= [a-zA-Z \ s] * 795 = 12)后跟字符和空格,然后是795 = 12