正则表达式匹配基于字符数?

时间:2012-11-25 07:16:42

标签: php regex

可以正则表达式识别序列并根据它执行操作吗?

例如:我需要正则表达式来搜索$ string,然后根据$ string之前的x个字符计数并提取一些数据。

如果有人帮我更好地说出这个问题或建议链接,我们将不胜感激!

2 个答案:

答案 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的正则表达式引擎支持什么,但这是理论正则表达式的一个非常常见的扩展。