3

PHP では、成功せずに正規表現を作成しようとしています。これは、数字と単一の「終了」文字で構成される式に一致する必要があります。数字の前にF. 一致する文字列の例を次に示します

$test = "123A456C789XF765S333333AF444G";

そして次の正規表現

preg_match_all("/(?<!F)(\d+)([ASTCGX])+/", $test, $matches)

次の式が見つかります。

123A
456C
789X
65S
33333A
44G

次の一致のみを期待していますが:

123A
456C
789X
333333A

\d+正規表現に一致するように数字を分割したくありません。のような表現は一致しF\d+[ACXSG]+ません。これを達成する方法は?

4

2 に答える 2

4

これを使用することをお勧めします:

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 
于 2013-05-30T14:10:25.907 に答える
0

\d++ の代わりに \d{3,0} を使用してください

preg_match_all("/(?<!F)(\d{3,})([ASTCGX])+/", $test, $matches);
于 2013-05-30T14:35:50.117 に答える