주어진 문자열(보통 단락)에 대해 일부 단어/문구를 바꾸고 싶지만 어떤 방식으로든 태그로 둘러싸여 있으면 무시합니다. 또한 대소문자를 구분하지 않아야 합니다.
이것을 예로 들어보세요:
으아악다음 단어를 바꾸고 싶다고 가정해 보겠습니다.
link
:出现 2 次。第一个是纯文本(匹配),第二个是 A
표시(무시)公共平台
:纯文本(匹配,不区分大小写),B
태그의 두 번째(무시됨) softpillows
: 일반 텍스트 일치 1개. fox
: 일반 텍스트 일치 1개. 완전한 단어를 봅니다. fruits
:纯文本(匹配),span
다른 텍스트와 함께 태그의 두 번째(무시됨) 배경으로 구문 일치(개별 단어 아님)를 검색하고 일치 항목을 관련 페이지에 연결합니다.
중첩된 HTML(태그 내에서 bold no linksthe <a href="#">phrase <b>goes</ a> 这里</b>
또는 그 반대) 또는 기타 오류(예:
HTML 콘텐츠가 제거된 텍스트의 삭제된 복사본을 검색하는 등 몇 가지 작업을 시도했는데 일치하는 항목이 있다는 것을 알려주는 동안 이를 원래 콘텐츠에 다시 매핑해야 하는 완전히 새로운 문제에 직면했습니다. 🎜
P粉5949413012024-03-28 12:56:47
regex negative lookahead에 대한 언급을 찾았고 마음이 무너진 후 이 정규식을 얻었습니다( VALID html 태그 쌍이 있다고 가정)
으아악기본 매개변수를 사용한 출력 예
으아악이제 한걸음씩
pillowS
,我们就不需要 pillow
)w
单词符号、s
空格或 n
换行符和 允许以开始结束标记
结尾的标点符号 - 我们不需要这个匹配,这里出现了否定的先行 (?![wns>$标点符号]*?)
。在这里我们可以确定匹配不会进入新标签,因为 <
不在描述的序列中($excludeOutside
변수가 오는 경우)$excludeTag
变量与 $excludeOutside
基本相同,但适用于 $toReplace
可以是 html 标签本身的情况,例如 一个
<
或 >
로 텍스트를 덮어쓸 수 없으며 이러한 기호를 사용하면 예기치 않은 동작이 발생할 수 있습니다