2011-01-04 3 views
3

I 나는 모든 문자열과 일치하는 정규 표현식 생성 붙어 : < 페이지를 포함하지 않는 텍스트
2의 중간에 "> < P> \ S </P"
1 포함을> \ S </P> 시작 부분이나처음이나 끝에 특정 문자열을 포함하지 않는 정규 표현식을 생성하는 방법은 무엇입니까?

도와 주셔서 감사합니다 당신이 <p></p> 사이에 단일 공백과 일치 할 것 같습니다 코멘트에서

+0

'\ S'가 아닌 공간 문자가 아니면 말 그대로'\의 S'를 일치 시키려면? – codaddict

+2

어떤 종류의 reg.exp입니까? 펄? egrep, grep, ECMAScript? 정력? – Benoit

+0

\ S는 공백을 의미하며 PREG가 필요합니다 ... 도움을 주신 많은 분께 – Alaa

답변

2

에 대한 텍스트의 끝에. 그렇다면 \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. 
관련 문제