gpt4 book ai didi

php - Javascript lastIndex 正则表达式属性到 PHP 正则表达式

转载 作者:可可西里 更新时间:2023-11-01 01:04:02 24 4
gpt4 key购买 nike

我正在尝试用 PHP 翻译一个 javascript 脚本。到目前为止进展顺利,但我偶然发现了一些我一无所知的代码:

while (match = someRegex.exec(text)) {
m = match[0];

if (m === "-") {

var lastIndex = someRegex.lastIndex,
nextToken = someRegex.exec(parts.content);

if (nextToken) {
...
}

someRegex.lastIndex = lastIndex;
}
}

someRegex 变量如下所示:

/[^\\-]+|-|\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)/g

exec 应该等同于 PHP 中的 preg_match_all:

preg_match_all($someRegex, $text, $match);
$match = $match[0]; // I get the same results so it works

foreach($match as $m){

if($m === '-'){

// here I don't know how to handle lastIndex and the 2nd exec :(

}

}

最佳答案

我根本不会使用那个 lastIndex 魔法——本质上你是在每个索引上执行两次正则表达式。如果你真的想这样做,你需要在 preg_match_all 中设置 PREG_OFFSET_CAPTURE 标志。以便您可以获得位置,添加捕获长度并将其用作下一个 preg_match偏移量。

最好使用这样的东西:

preg_match_all($someRegex, $text, $match);
$match = $match[0]; // get all matches (no groups)

$len = count($match);
foreach($match as $i=>$m){

if ($m === '-') {
if ($i+1 < $len) {
$nextToken = $match[$i+1];

}

}

}

关于php - Javascript lastIndex 正则表达式属性到 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com