Quiero detectar cosas que comienzan con @ y tienen un paréntesis doble. @[uuid][valor de visualización]. Tengo la siguiente expresión regular para eso.
@\[([^\][]*)]\[([^\][]*)]Quiero emparejar lookahead((?=) con él, pero hacerlo no funciona.
(?=@\[([^\][]*)]\[([^\][]*)])No devuelve ninguna coincidencia. Lookahead es mantener el delimitador en la función de división de JavaScript.
Considere el siguiente ejemplo:
const text = 'I want to thank @[handle1][displayValue1], @[handle2][displayValue2] for their contribution'. Cuando uso text.split(/(?=@\[([^\][]*)]\[([^\][]*)])/g) con la expresión regular, busco el siguiente resultado
['I want to thank ','@[handle1][displayValue1]',', ','@[handle2][displayValue2],'for their contribution']ejecute el fragmento y obtendrá las coincidencias con índices de inicio
for( let a of 'I want to thank @[handle1][displayValue1], @[handle2][displayValue2] for their contribution'.matchAll(/@\[(.*?)\]\[(.*?)\]/g)){console.log(a)}si uuid/displayValue puede contener @[][] como palabras, necesitará codificar más lógica, probablemente con una máquina de estado finito