2011-01-04 1 views
3

Я застрял с созданием регулярных выражений, которые соответствуют любой строке:
1 содержит «< р> \ S </р>» в середине текста
2 не содержит < р> \ S </р> в начале или в конце текстаКак создать регулярное выражение, которое не содержит определенную строку в начале или в конце?

Спасибо за вашу помощь

+0

Является '\ S' любое непробельный символ или вы хотите, чтобы в буквальном смысле соответствует' \ S'? – codaddict

+2

Какой reg.exp? Perl? egrep, grep, ECMAScript? Vim? – Benoit

+0

\ S означает любое пустое пространство, и мне нужен PREG ... спасибо большое за вашу помощь. – Alaa

ответ

2

от комментариев он выглядит, как вы хотите, чтобы соответствовать один пробел между <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. 
Смежные вопросы