可以正则表达式识别序列并根据它执行操作吗?
例如:我需要正则表达式来搜索$ string,然后根据$ string之前的x个字符计数并提取一些数据。
如果有人帮我更好地说出这个问题或建议链接,我们将不胜感激!
答案 0 :(得分:3)
你正在寻找正则表达式中名为lookahead的东西。 例如,下面的正则表达式只有在字符串前面有5到7位数时才会匹配 自然 - 您需要将“string”替换为您自己的var。
if (eregi('[[:digit:]]{5,7}(?=string)', $subject)) {
# Successful match
} else {
# Match attempt failed
}
答案 1 :(得分:1)
我不了解PHP,但对于提供反向引用的正则表达式引擎,这应该可以解决问题(使用Javascript样式的RegExp创建):
var reg = new RegExp("^.*(.{"+x+"})"+str);
如果x为5,str为“world”,则正则表达式将如下所示:
/^.*(.{5})world/
在此字符串somethinghelloworld
上运行时,匹配的字符串将为hello
。
我不知道PHP的正则表达式引擎支持什么,但这是理论正则表达式的一个非常常见的扩展。