Регулярное выражение совпадает слово по точной длине слова - PullRequest
0 голосов
/ 03 ноября 2019

Я бы хотел сопоставить слово с точной длиной, определенной в регулярном выражении. если слово превышает или находится ниже предела, оно не должно совпадать с

, например,

Hello соответствует этому C90.083635. Слово длиной 11 символов не C90.083635.73G, потому что оно превышает 11 символов, а не C90.08363, потому что оно не содержит 11 символов.

Попробуйте это ^.{11}$\b^, но оно соответствует словам либо 11 символов словабольше 11 или меньше или точная

Вторая проблема. Пожалуйста, помогите с регулярным выражением, которое соответствует слову, начинающемуся с конкретному символу и оканчивающемуся на .00 , напримерVT500.00

1 Ответ

2 голосов
/ 03 ноября 2019

Для шаблона, который вы пробовали, вы используете якорь ^, который устанавливает начало строки, и $, который устанавливает конец $. Если вы не хотите сопоставлять пробелы, вы можете использовать \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

...