正则表达式按精确字长匹配字

Regex matching word by exact word length

我想匹配一个在正则表达式中定义了精确长度的单词。如果单词超过或低于限制,则不应匹配

例如

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.

已经尝试过这个 ^.{11}$\b^ 但它匹配大于 11 或小于 11 个字符的单词或完全匹配的单词

第二个问题,请帮助匹配以特定字符开头并以.00结尾的单词的正则表达式,例如VT500.00

对于您尝试的模式,您使用的锚点 ^ 断言字符串的开头,$ 断言结尾 $。如果您不想匹配空格,可以使用 \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