2013-10-07 3 views
0

구문이 HTML 앵커 태그 또는 IMG 태그에 포함되어 있지 않으면 구문을 바꾸는 데 사용되는 정규식이 있습니다. 문구가 검색되는이 예를 들어 "안녕하세요!".Net 정규 표현식을 PHP로 변환하는 방법

닷넷 정규 표현식

(?<!<a [^<]+)(?<!<img [^<]+)(?<=[ ,.;!]+)hello world(?=[ ,.;&!]+)(?!!.*</a>) 

예입니다 정규 표현식은

"one two three hello world four five" 

같은 문구에 "Hello World"를 일치해야하지만, 그것은과 관련된

"one two three <a href='index.html'> hello world </a> four five" 

또는

"one two three <img alt='hello world' \>four five" 

같은 문구 안녕하세요 세계와 일치하지 말아야 원래 닷넷 버전을 개발할 당시의 다음 질문. regular expression that doesn't match a string if it's the text within an html anchor tag

PHP 정규식으로 변환하는 방법에 대한 모든 지침을 매우 극명하게 될 것입니다.

+0

이 정규 표현식도 .NET에서 아무것도 일치하지 말아야 참조하십시오. 닫는 태그에는 슬래시 ('')가 있지만 표현식은 백 슬래시를 찾습니다. –

+0

@DanielHilgarth 수정 해 주셔서 감사합니다. 질문을 업데이트했습니다. – Rich

+0

그리고 지금 문제가 무엇입니까? –

답변

1

참고 : 태그를 구문 분석하기 위해 정규 표현식을 사용하지 마십시오.

a 또는 img 태그의 경우 특별히 다음을 수행 할 수 있습니다.

(?!<(?:a|img)[^>]*?>)\bhello world\b(?![^<]*?(?:</a>|>)) 

내가 또는 태그 사이에 아무것도 가정 live demo

를 참조하십시오, 당신은이를 시도 할 수 있습니다.

(?!<[^>]*?>)\bhello world\b(?![^<]*?(?:</[^/]*>|>)) 

live demo

+0

대소 문자를 구별하지 않으므로 첫 번째 정규식을 사소한 조정으로 성공적으로 사용했습니다. 도와 주셔서 감사 드리며 라이브 데모를 주셔서 감사합니다. 저는 다음 번에 정규 표현식을 써야하는 불행을 겪을 때 해당 사이트를 사용하게 될 것입니다. – Rich

+0

도움이 될 수있어서 다행입니다. – hwnd

관련 문제