от комментариев он выглядит, как вы хотите, чтобы соответствовать один пробел между <p>
и </p>
. Если да, то вы должны использовать \s
, а не \S
. \s
соответствует любому символу пробела, где \S
соответствует любому символу без пробела.
Вы можете попробовать:
(?!^<p>\s<\/p>)(?!.*<p>\s<\/p>$)(?=.*<p>\s<\/p>)
та часть (?!^<p>\s<\/p>)
обеспечения строка не начинается с <p>\s<\/p>
.
Часть (?!.*<p>\s<\/p>$)
гарантирует, что строка не заканчивается <p>\s<\/p>
.
Часть (?=.*<p>\s<\/p>)
убедитесь, что в строке есть <p>\s<\/p>
.
Если вы используете это в PHP вы должны поставить регулярное выражение между парой разделителей как:
$x="abc <p> </p> def";
$R="#(?!^<p>\s<\/p>)(?!.*<p>\s<\/p>$)(?=.*<p>\s<\/p>)#";
$result=preg_match($R,$x);
var_dump($result); // prints 1.
Является '\ S' любое непробельный символ или вы хотите, чтобы в буквальном смысле соответствует' \ S'? – codaddict
Какой reg.exp? Perl? egrep, grep, ECMAScript? Vim? – Benoit
\ S означает любое пустое пространство, и мне нужен PREG ... спасибо большое за вашу помощь. – Alaa