2016-06-20 3 views
2

HTML 텍스트의 정규식 으로 해시 태그를 추출하려고하지만 HTML 속성에 문제가 있습니다. HTML 텍스트의 예를 들어해시 태그와 일치시키는 정규식 패턴

:

나는 "hash1", "hash2"와 "hash4"하지만 하지 "hash3"를 복구 할
hola que tal with #hash1. 
hola que tal with #hash2 

y <a href="hola.que.tal#hash3"> para #hash4. </a> 

.

나는 다음과 같은 표정으로 lookarounds 그것을 해결하기 위해 노력 :

(?<!<)#([a-z0-9_]+)(?!.*?>) 

하지만 성공하지.

정규 표현식으로 어떻게 할 수 있습니까?

+0

html 파서를 사용하고 결국 xpath 쿼리를 사용하여 텍스트 노드 만 대상으로합니다. 그런 다음 기본 정규식을 사용하여 각 텍스트 노드에 대한 해시 태그를 찾습니다. –

+0

여러 단계로 처리 할 수 ​​있다는 것을 알고 있지만 하나의 정규 표현식으로 처리해야합니다. Thanks @ CasimiretHippolyte –

+0

왜 단 한 단계 (정규 표현식)로 그것을하고 싶습니까? –

답변

2

/#[a-z0-9_]+(?![^<]*>)/ 

http://www.regexpal.com/?fam=95144

무엇 부정적 예측이하는 것은이 해시 태그와 다음 > 사이 <이 있음을 확인합니다 참조 작동합니다.

+0

그레이트 정규식. 나는 그 결과를 포착 할 필요가있는 결과를 동봉한다. 귀하의 솔루션으로 편집되었습니다. 감사! –

관련 문제