繁体   English   中英

正则表达式提取2个字符串之间的字符串,其中包含第3个字符串

[英]Regex extract string between 2 strings, that contains 3rd string

我有这个正则表达式

(?<=TG00).*?(?=#)

提取TG00#之间的所有字符串。 演示: https : //regex101.com/r/04oqua/1

现在,从以上结果中,我只想提取包含TG40 155963的字符串。 我该怎么做?

您可以将此正则表达式与前瞻性和否定字符类一起使用:

(?<=TG00)(?=[^#]*TG40 155963)[^#]+(?=#)

正则演示

RegEx说明:

  • (?<=TG00) :断言我们在先前位置有TG00
  • (?=[^#]*TG40 155963) :先断言我们在0个或多个非#字符之后有字符串TG40 155963
  • [^#]+ :匹配1+个非#字符

试试这个模式:

TG00[^#]*TG40 155963[^#]*#

该模式只是说要在TG00和结尾#之间找到字符串TG40 155963 对于您的演示中的样本数据,有3个匹配项。

演示

由于某种原因附加.*? 往后看会导致引擎错误,但与前瞻效果很好。 正则表达式如下不完全匹配您的文字,但它通过捕获组提取出来。

(?<=TG00).*?(TG40 155963)(?=.*?#)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM