0

我正在尝试编写一个正则表达式来过滤掉未挂起的 perforce 更改列表描述。

因此,字符串“ Change 358618 on 2013/11/09 by abcdm@abcd_PQRST_UVWXY ”应该通过,但字符串“ Change 358618 on 2013/11/09 by abcdm@abcd_PQRST_UVWXY *pending* ”不应该通过。到目前为止,我想出了以下内容。

($token1,$token2,$token3) = ( $string =~ /^Change\s+([0-9]+)\s+(.*)\s(?!\\*pending\\*)/ );

因此,如果模式匹配,我应该能够使用更改列表编号。如果更改列表处于待处理状态,则不会返回任何令牌。

4

2 回答 2

4

在表达式的末尾使用否定的lookbehind断言:

(?<!\*pending\*)$
于 2013-09-11T08:52:01.040 回答
1

我不会使用正则表达式来解决这个问题,因为它是一项昂贵的操作。如果您确定要排除的字符串以待处理结尾,只需使用偏移量检查字符串的该部分:

$string1 = 'Change 358618 on 2013/11/09 by abcdm@abcd_PQRST_UVWXY *pending*';
$string2 = '*pending*';

$offset = length($string1) - length($string2);

$result = index($string1, $string2, $offset);
于 2013-09-11T08:58:37.370 回答