Для шаблона, который вы пробовали, вы используете якорь ^
, который устанавливает начало строки, и $
, который устанавливает конец $
. Если вы не хотите сопоставлять пробелы, вы можете использовать \S
вместо .
. Вместо этого вы можете 11 раз сопоставить символ без пробела и проверить, не окружен ли он символом без пробела. .
(?<!\S)\S{11}(?!\S)
Regex demo | Php demo
Например
$re = '~(?<!\S)\S{11}(?!\S)~';
$str = 'Hello match this C90.083635. 11 character long word not C90.083635.73G because it exceed 11 character and not C90.08363 because is not 11 character long.';
preg_match_all($re, $str, $matches);
print_r($matches[0]);
Вывод
Array
(
[0] => C90.083635.
)
Одним из вариантов второй части может быть использование границ слов \b
и используйте \S+
, чтобы соответствовать 1+ раз непробельному символу.
\bV\S+\.00\b
Regex demo