我使用正则表达式来解析一些记录,我很难弄清楚如何构造正则表达式来找到下面的场景。
示例记录: 这是一个测试字符串425 = UA113456 jkjkj 425 = AB1234X 这是一个测试字符串795 = 12这是一个测试字符串。
要求。找到标签795 = 12并搜索返回以找到标签425的值。在这种情况下,返回值应为AB1235X。 注意:可能有多个425 =标签,就像在这个例子中有两个,但我需要标签的值,它在795 = 12之前。
这就是我到目前为止^。* 425 =(。*?)795 = 12但不完全是我需要的。
我将不胜感激。
答案 0 :(得分:0)
假设所有代码均为数字,请使用此模式(\d+)=(\S+)[^=]*795=12
Demo或Demo
( # 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)