2011-01-04 8 views
3

私は任意の文字列にマッチする正規表現の作成で立ち往生しています:
1-テキスト
2-途中で "<のp> \ S </P>が" < P> \ S <が含まれていません含まれてい/ P>冒頭または最初または最後に特定の文字列を含まない正規表現を生成する方法はありますか?

おかげであなたの助けあなたが<p></p>との間に単一の空白文字を一致させたいように見えるコメントから

+0

は '任意の非空白文字の\ S'ですか、あなたは文字通り' \ S'に一致するようにしたいですか? – codaddict

+2

どのような種類のreg.expですか? Perl? egrep、grep、ECMAScript?ヴィム? – Benoit

+0

\ Sは空白を意味し、PREGが必要です...あなたの助けに感謝します – Alaa

答えて

2

のテキストの最後に。その場合は\Sではなく\sを使用する必要があります。 \sは、いずれか1つの空白文字に一致します.\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. 
関連する問題