我想匹配一个正则表达式中定义的确切长度的单词。如果单词超过或低于此限制,则应不匹配
例如
您好,匹配此C90.083635。 11个字符长的单词不是C90.083635.73G 因为它超过11个字符而不是C90.08363因为不是11个字符 字符长。
尝试过此^.{11}$\b^
,但它匹配的单词是11个字符的大于11或小于或等于的字符
第二个问题,请提供正则表达式帮助,该正则表达式匹配以特定字符开头并以 .00 结尾的单词,例如VT500.00
答案 0 :(得分:2)
对于您尝试过的模式,您使用的锚点^
声明字符串的开始,而$
声明结束的字符串$
。如果您不想匹配空格,可以使用\S
代替.
您可以做的是将11个非空白字符匹配,并检查它是否不被非空白字符包围。
(?<!\S)\S{11}(?!\S)
例如
$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