我正在尝试编写一个正则表达式,用于过滤掉尚未处理的perforce更改列表描述。
所以字符串“在2013/11/09由abcdm @ abcd_PQRST_UVWXY 更改358618”应该通过 但字符串“在2013/11/09由abcdm更改358618 @ abcd_PQRST_UVWXY *待审* ”不应该。 到目前为止,我已经提出了以下内容。
($token1,$token2,$token3) = ( $string =~ /^Change\s+([0-9]+)\s+(.*)\s(?!\\*pending\\*)/ );
因此,如果模式匹配,我应该能够使用更改列表编号。如果更改列表未决,则不会返回任何令牌。
答案 0 :(得分:4)
在表达式的末尾使用负面的lookbehind断言:
(?<!\*pending\*)$
答案 1 :(得分: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);