Cuando estaba programando el módulo de carga de ZBlog hoy, necesitaba usar una subrutina para extraer los nombres de los archivos en el artículo. Al principio complicé el problema y emparejé todos los nombres de archivos posibles. No solo escribí una larga lista de expresiones regulares. pero también Dividir a continuación Después de trabajar en ello durante mucho tiempo, de repente descubrí que todos los archivos cargados de Z-Blog estaban almacenados en la carga y que se escribieron tantas coincidencias complicadas en vano. . . Oye, no se puede desperdiciar. Es mejor publicarlo en caso de que algún hermano lo necesite en el futuro ~~
El siguiente subproceso básicamente puede considerarse como una coincidencia universal relativamente buena. (PD: ¡¡¡De repente descubrí que CODE_LITE se había escapado de mi UBB!!! Dizzy, tuve que escapar yo mismo...)
-------------------------------------------------- ----------------------------------
Dim objRegExp, Coincidencias, i, DC9_DOT_CN_MATCH
Dim aryMatch()
Redim Preservar aryMatch(0)
Establecer objRegExp=Nueva expresión regular
objRegExp.IgnoreCase =Verdadero
objRegExp.Global=Verdadero
objRegExp.Pattern="(?:[[^]]+]([^[]+)[/[^]]+])|(?:(?:href|src) =([^s|^>]+)[""|>|s'])"
Establecer coincidencias = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Dim TmpMatch
Para i=0 a Matches.Count-1
Llame a InsertDataToArray(Matches(i).SubMatches(0),aryMatch)
Llame a InsertDataToArray(Matches(i).SubMatches(1),aryMatch)
Siguiente
Para i=0 a Ubound(aryMatch)
Si no es Null(aryMatch(i)) y Trim(aryMatch(i))<>"" Entonces Response.write aryMatch(i)&"<br>"
Siguiente
función InsertDataToArray(Data,ByRef aryMatch)
Si Trim(Datos)<>"" Entonces
Datos=Reemplazar(Datos,"'","")
Datos=Reemplazar(Datos,"""","")
Datos=Reemplazar(Datos,"","/")
Datos=Dividir(Datos,"/"))(Ubound(Dividir(Datos,"/")))
Redim Preservar aryMatch(Ubound(aryMatch)+1)
DC9_DOT_CN_MATCH=Falso
Para j=0 a Ubound(aryMatch)
Si aryMatch(j)=Datos Entonces DC9_DOT_CN_MATCH=True
Próximo
Si no es DC9_DOT_CN_MATCH entonces aryMatch(Ubound(aryMatch))=Datos
Terminar si
Función final
------------------------------------------------ --------------------------------
En realidad, para Z-Blog, sólo necesita coincidir con Upload (pero para evitar problemas , Yo, y para ser más preciso, simplemente agregué la carga a la coincidencia anterior, por lo que parece que la siguiente es más complicada. De hecho, la siguiente debería ser más simple en teoría. Después de todo, la carga está a cargo. .) Simplemente escriba el SPlit /.
-------------------------------------------------- ----------------------------------
Dim objRegExp, Coincidencias, i, ZC_UPLOAD_MATCH
Dim aryMatch()
Redim Preservar aryMatch(0)
Establecer objRegExp=Nueva expresión regular
objRegExp.IgnoreCase =Verdadero
objRegExp.Global=Verdadero
objRegExp.Pattern="(?:[[^]]+][^[]*cargar/([^[|^\|^/]+)[/[^ ]]+])|(?:(?:href|src)=""{0,1}[^s|^""|^>|^']*subir/([^s| ^>]+)[""|>|s'])"
Establecer coincidencias = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Datos=Reemplazar( Datos,"""","")
Redim Preservar aryMatch(Ubound(aryMatch)+1)
ZC_UPLOAD_MATCH=Falso
Para j=0 a Ubound(aryMatch)
Si aryMatch(j)=Datos Entonces ZC_UPLOAD_MATCH=True
Próximo
Si no es ZC_UPLOAD_MATCH Entonces aryMatch(Ubound(aryMatch))=Datos
Terminar si
Función final
Fuente: http://www.dc9.cn/post/279.html