Regex同时向前看和向后看

本文关键字:向前看 Regex | 更新日期: 2023-09-27 18:30:13

我正在尝试编写一个Regex,它同时匹配我当前角色前面和后面的模式。

例如:

红色、绿色、黄白色、雪地

在中

312415 red, gree, yellow-white, snowy CDEFASE

一、二、三#四

在中

29321093123 one, two, three #four IRUASJDJADALLDLA

正如你所看到的,在字符串中间部分的前面和后面,我有相同的模式:

前部:''d+

返回:[A-Z]+

我怎样才能做到这一点?

Regex同时向前看和向后看

使用下面的正则表达式,从组索引1中获取所需的字符串。

'd+'s+(.*?)'s+[A-Z]+

演示

您不能同时向后看和向前看,但您可以像通常使用它们一样单独使用它们。

从一个查找表开始,该查找表检查字符串(数字后跟空格(?<='d+ ))匹配中间.+中的任何字符然后以前瞻结束,该前瞻匹配后面跟着一个或多个字母(?= [A-Z]+) 的空格

把所有这些放在一起,你就得到了(?<='d+ ).+(?= [A-Z]+)

Lookahead和Lookbehinds并不是你想象的那样。它们是零宽度断言,这意味着它们不匹配任何内容,只检查模式的存在/不存在。

这里要匹配的是一个数字后面跟着一系列字符,然后再跟着另一系列大写字符。你怎样才能捕捉到中间的东西?你可以使用括号。他们在比赛过程中捕捉比赛,并将其保存以供日后参考。AVinash答案中的(.*?)部分实际上捕捉到了你想要的文本。