문자열이 있습니다. 이 아닌 더 큰 문자를 모두 찾으려면 HTML 태그를 사용해야합니다.너비가 0 인 긍정적 인 lookbehind 어설 션으로 정규 표현식에 문제가 발생했습니다
CDATA 등을 무시하면 쉽습니다. 앞에 "<"이 없거나 그 사이에 다른 ">"가없는 ">"문자를 찾으십시오. 나는이가 중, 어떤 ">"바로 왼쪽에는 "<"문자가없는 경우 다시 찾아야한다 생각
(?<=(^|>)[^<]*)>
: 여기
내가 생각 해낸 최초의 시도 솔루션입니다 문자열의 시작 부분, 또는 이전의 ">"부분으로 되돌아갑니다. 나는 부정적으로뿐만 아니라 그것을 같이 분석 시도 :(?<!<[^>]*)>
즉 ">"그 만이 아닌 다음에하지 않는도 아니다 "<"로 시작되는 - ">"문자.
나는 내가 머리를 기울이면 어떻게 보이게 작동하는지에 대해 의심 스럽다.
단위 테스트 :
No match in: <foo>
No match in: <foo bar>
Match in: <foo> bar>
Match in: foo> bar
Match in: >foo
Two matches in: foo>>
Two matches in: <foo> >bar>
사용 사례 : 나는 이 일부 HTML 태그를 받아들이는 위키 같은 양식 필드에서 HTML을 닦고 있어요,하지만 사용자가 아닌 정말 HTML에 정통한 때로는 이스케이프 입력 " > "및"< "리터럴을 의미합니다. 내 의도는 HTML 태그의 일부가 아닌 경우에만 HTML 엔터티로 대체하는 것입니다. "Heigh is < 10 and> 5"와 같은 텍스트를 입력 할 가능성이 있다는 것을 알고 있습니다.이 문제는이를 해결할 수 있지만, 해결할 수있는 가장 중요한 경우입니다.
'(? ) *)>' –
죄송합니다. Brad는 작동하지 않습니다. – richardtallent
어쨌든 가치있는 시도. –