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