Estoy usando jQuery. Tengo una cadena con un bloque de caracteres especiales (principio y fin). Quiero obtener el texto de ese bloque de caracteres especiales. Usé un objeto de expresión regular para encontrar en cadena. Pero, ¿cómo puedo decirle a jQuery que busque múltiples resultados cuando tenga dos caracteres especiales o más?
Mi HTML:
<div id="container">
<div id="textcontainer">
Cuộc chiến pháp lý giữa [|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|] và ngân hàng đầu tư quyền lực nhất Phố Wall mới chỉ bắt đầu.
</div>
</div>
y mi código JavaScript:
$(document).ready(function() {
var takedata = $("#textcontainer").text();
var test = 'abcd adddb';
var filterdata = takedata.match(/(\[.+\])/);
alert(filterdata);
//end write js
});
Mi resultado es: [| cơ thử | nghiệm |] thị trường [| test2 | đây là test lần 2 |] chứng khoán [| Mỹ | day la nuoc my |] . Pero este no es el resultado que quiero :(. ¿Cómo obtener [texto] para los tiempos 1 y [demo] para los tiempos 2?
Acabo de hacer mi trabajo después de buscar información en internet ^^. Hago un código como este:
var filterdata = takedata.match(/(\[.*?\])/g);
- mi resultado es: [| cơ thử | nghiệm |], [| test2 | đây là test lần 2 |] ¡ esto es correcto !. pero realmente no entiendo esto. ¿Puedes responder mi por qué?
?
por sí solo significa 'uno o cero' (¡pero es codicioso!). Por ejemplo'bb'.replace(/b?/, 'a') //'ab'
y'bb'.replace(/c?/, 'a') //'abb'
c
no coincidirá, pero usted tiene el?
, que es0 or 1
, entonces coincidirá0 number of c characters
, por lo tanto, lo reemplazará. Sin embargo, no tengo idea de cómo funciona, porque eso no se compila en ningún motor regex que he probado 😢Tienes razón en que la codicia es un problema:
Si quieres unir ambos
A--Z
, deberías usarA.*?Z
(lo que?
hace que sea*
"reacio" o perezoso).Sin embargo, a veces hay mejores maneras de hacer esto, p. Ej.
Utiliza una clase de caracteres negada y un cuantificador posesivo para reducir el retroceso y es probable que sea más eficiente.
En su caso, la expresión regular sería:
Desafortunadamente, Javascript regex no admite cuantificador posesivo, por lo que solo tendría que ver con:
Ver también
Sumario rápido
Tenga en cuenta que los cuantificadores reacios y posesivos también son aplicables a las
{n,m}
construcciones de repetición finita .Ejemplos en Java:
fuente
+
lugar de dos.you can emulate atomic grouping with LookAhead. (?>a) becomes (?=(a))\1
Creo que seria asi
el
g
al final significa mundial, por lo que no se detiene en el primer partido.fuente