¡Acechador desde hace mucho tiempo, póster por primera vez! Gracias a cualquiera de antemano que pueda ayudar.
Estoy usando Node.JS y Electron para crear una pequeña aplicación de escritorio que administra los valores en un archivo de juego (que es de un tipo de archivo personalizado, básicamente un archivo INI glorificado). Con la idea de permitir que las personas personalicen el archivo en una interfaz de usuario agradable en lugar de revisar cientos de líneas de código. A continuación se muestra una muestra del archivo:
setting $Low prop $Config A_STRING_HERE "5, 10, 15, 20" setting $Medium prop $Config A_STRING_HERE "10, 20, 40, 80" setting $High prop $Config A_STRING_HERE "20, 40, 80, 160" setting $VeryHigh prop $Config A_STRING_HERE "40, 80, 160, 320" ¿Cómo haría para hacer coincidir, por ejemplo, la ocurrencia "setting $High" (3ra) que contiene "A_STRING_HERE" hasta el final de la línea? Espero coincidir solo:
A_STRING_HERE "20, 40, 80, 160" .
Los valores son dinámicos y cambiarán mucho, por lo que hacer coincidir la línea con los valores no es necesariamente una opción.
\A_STRING_HERE.+\g coincidirá con todas las ocurrencias hasta el final de la línea.\A_STRING_HERE.+\ hará coincidir la primera aparición con el final de la línea.\A_STRING_HERE.+\?????? coincidirá con la tercera aparición al final de la línea?¡Gracias de nuevo y todo lo mejor!
Probablemente puedas probar esta expresión regular:
(?<=setting \$High\n\s*?prop \$Config )A_STRING_HERE.*explicación
(?<=) - Representa una mirada positiva hacia atrás.setting \$High\n\s*?prop \$Config - El texto que separa esta coincidencia con otras coincidencias. Probablemente pueda omitir la parte de setting para que sea más conciso.\n - Representa una nueva línea.\s*? - Lazily coincide con 0 o más espacios en blanco. Puedes ajustarlo según tu necesidad..* - Coincide con todo excepto \n . También puede ser específico aquí si desea incluir solo números.\g - Tenga en cuenta que solo se usa la bandera global.Puede encontrar la implementación de la expresión regular anterior aquí.
const regex = /(?<=setting \$High\n\s*?prop \$Config )A_STRING_HERE.*/g; // Alternative syntax using RegExp constructor // const regex = new RegExp('(?<=setting \\$High\\n\\s*?prop \\$Config )A_STRING_HERE.*', 'g') const str = `setting \$Low prop \$Config A_STRING_HERE "5, 10, 15, 20" setting \$Medium prop \$Config A_STRING_HERE "10, 20, 40, 80" setting \$High prop \$Config A_STRING_HERE "20, 40, 80, 160" setting \$VeryHigh prop \$Config A_STRING_HERE "40, 80, 160, 320"`; console.log(str.match(regex)[0]);