在PHP中,我试图创建一个没有成功的正则表达式,它应该匹配由数字和单个'结束'字符组成的表达式,只有数字不是由F
开头。下面是一个匹配
$test = "123A456C789XF765S333333AF444G";
和后面的regex
preg_match_all("/(?<!F)('d+)([ASTCGX])+/", $test, $matches)
查找以下表达式:
123A
456C
789X
65S
33333A
44G
而我期望只匹配以下内容:
123A
456C
789X
333333A
我不希望将数字'd+
拆分以匹配正则表达式。像F'd+[ACXSG]+
这样的表达式应该匹配而不是 !如何做到这一点?
我建议你这样做:
preg_match_all("/(?<!['dF])('d++)([ASTCGX])/", $test, $matches);
解释:
(?<!['dF]) # not preceded by F or a digit (numbers can't be trunked)
'd++ # one or more digit (with a possessive quantifier, optional but better)
[ASTCGX] # one of these characters
用'd{3,0}代替'd++
preg_match_all("/(?<!F)('d{3,})([ASTCGX])+/", $test, $matches);