"Huella digital (montada en la parte trasera, dependiente de la región), acelerómetro, proximidad"
Arriba está la cadena de sensores en un dispositivo. Estoy tratando de hacer coincidir cada sensor. El problema es que cuando coincido arriba usando /.+?,/g , las coincidencias son:
Tengo 4 sensores aquí en lugar de tres. Porque, por supuesto, mi patrón coincide con estos. Lo que quiero hacer es que cuando un , esté precedido por ( , entonces quiero hacer coincidir ), y cuando no esté precedido por ( , quiero hacer coincidir ,
Creo que necesito usar lookarounds aquí. Pero no puedo hacer que trabajen para mí. Probé varias expresiones regulares. Es una tontería pegarlos todos aquí :)
estoy usando JavaScript
Aquí hay una forma de hacerlo:
(?:[^(,]+(?:\([^)]*\))?)+?(?:, |$)Vea la demostración en línea aquí .
const pattern = /(?:[^(,]+(?:\([^)]*\))?)+?(?:, |$)/g; const str = 'Fingerprint (rear-mounted, region dependent), accelerometer, proximity'; const matches = str.matchAll(pattern) for (const match of matches) { console.log(match[0]); }(?:)+? : Grupo no capturador, repetido entre una e ilimitadas veces, el menor número posible.[^(,] : coincide con cualquier carácter que no sea ( o , .(?:)? : Grupo no capturador opcional.\( : Coincide con ( .[^)]* : Coincide con cualquier carácter que no sea ) , entre cero y un número ilimitado de veces, tanto como sea posible.\) : Partidos ) .(?:) : Grupo que no captura., : Partidos , .| : O.$ : Coincide con el final de la cadena.