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]+
我怎样才能做到这一点?
使用下面的正则表达式,从组索引1中获取所需的字符串。
'd+'s+(.*?)'s+[A-Z]+
演示
您不能同时向后看和向前看,但您可以像通常使用它们一样单独使用它们。
从一个查找表开始,该查找表检查字符串(数字后跟空格(?<='d+ )
)匹配中间.+
中的任何字符然后以前瞻结束,该前瞻匹配后面跟着一个或多个字母(?= [A-Z]+)
的空格
把所有这些放在一起,你就得到了(?<='d+ ).+(?= [A-Z]+)
Lookahead和Lookbehinds并不是你想象的那样。它们是零宽度断言,这意味着它们不匹配任何内容,只检查模式的存在/不存在。
这里要匹配的是一个数字后面跟着一系列字符,然后再跟着另一系列大写字符。你怎样才能捕捉到中间的东西?你可以使用括号。他们在比赛过程中捕捉比赛,并将其保存以供日后参考。AVinash答案中的(.*?)部分实际上捕捉到了你想要的文本。