2014-09-11 3 views
0

우리는 웹 페이지정규식 검색 및 대체 링크

에 다음 텍스트를 가지고

일부 ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ## page1234.asp :: 링크 ## 다음 좀 더 저쩌구

구문의 텍스트 이중 해시, 다음 링크를 두 번 대장, 다음 텍스트를 클릭 할 수는 다음과 같이 다시 더블 해시와 링크를 종료 :

[제목] 검색 엔진 최적화에 대한 마우스 오버 텍스트입니다
##[url]::[visible text]## 

##[url]::[visible text]::[title]## 

최적화. 가장 멋진 솔루션은 아니지만 수년간 근무 해 왔으며 시간이 지나도 변하지 않을 것입니다.

내가 원하는 것은 "수동"대신 RegEx를 사용하여 모든 문서를 검사하고 instr을 대체하고 교체하는 기능을 사용하는 탐지/대체 기능의 속도를 높이는 것입니다.

내 문제는

<a href="[url]" title="[title]">[visible text]</a> 

또는 내가 작업 및 검색을 수행하고 이후로 대체 할 수있는 배열을 포함하여 실제 HTML로 이들을 대체 할 하나 정규식 패턴을 구축하는 것입니다.

그래서 제 1의 우선 순위는

"##<text>::<text>##" or "##<text>::<text>::<text>##" 

을 찾아 다음 중 하나를 전체 라인을 돌아가거나 가능하면 것은 실제 html로도 삽입 할 수 있도록 정규식 일치 패턴을 이해하는 것입니다.

dim oRegEx, sText 
Set oRegEx = New RegExp 
oRegEx.Pattern = "##(.*?)::(.*?)(?:::(.*?))?##" 
oRegEx.Global = true 

sText ="foo ##page1234.asp::visible text## bar ##page1234.xml::visible text::title## bar" 
sText = oRegEx.replace(sText, "<a href=""$1"" title=""$3"">$2</a>") 

response.Write(sText) 

가에/일을 변경했다 : 내 생각 엔

샘의 정규 표현식을 기반으로 코드를 업데이트] ...이 두 개의 서로 다른 정규식 2 개 변수와 3 하나 하나와 일치하는 점이다 VBScript 환경에서 작동하도록 $ 1. 그러나 다른 모든 것들은 즉시 작동했습니다.

커뮤니티!

답변

2

찾기 :

##(.*?)::(.*?)(?:::(.*?))?## 

교체 :

<a href="$1" title="$3">$2<a> 

Demo


난 그냥이 하나 expression..so 옵션 제목 속성 (3 캡처 경우 만든

첫째 주 그룹)가 누락 된 경우 null 제목 속성 (<a href="page.asp" title="">)이 표시됩니다.

##  ?# literally match ## 
(.*?) ?# lazily capture 0+ characters 
::  ?# literally match :: 
(.*?) ?# lazily capture 0+ characters 
(?:  ?# begin optional non-capturing group 
    ::  ?# literally match :: 
    (.*?) ?# lazily capture 0+ characters 
)?  ?# end optional non-capturing group 
##  ?# literally match ## 
+0

최고 :

지금 표현을 확장 할 수 있습니다! 고마워요! – BerggreenDK

+0

그리고 데모를위한 훌륭한 사이트는 앞으로 그 혜택을 누릴 수 있다고 생각합니다. – BerggreenDK

+0

기꺼이 도와 드리겠습니다. Regex101이 글쓰기/테스트/공유 표현을 좋아합니다. – Sam