Nombrando nuestras expresiones regulares en JavaScript
21-03-2022
El otro día vi este tweet the Addy Osmani:
Tip: You can name capture groups for Regular Expressions in JavaScript. Define a named capture in angle brackets <> and they get returned under .groups.
https://twitter.com/addyosmani/status/1386031624232456194
Desconocía esa funcionalidad de las expresiones regulares en Javascript. Pues resulta que desde Java 7 también se puede seguir la misma nomenclatura en Java :)
Podemos transformar esto:
private static final Pattern pattern = Pattern.compile("^(\\w{2})_(\\d{2})$"); public SiteConfig config(String siteHeader) { final var matcher = pattern.matcher(siteHeader); return matcher.find() ? SiteConfig.of(matcher.group(1), matcher.group(2)) : SiteConfig.UNKNOWN; }
En algo como:
private static final Pattern pattern = Pattern.compile("^(?<country>\\w{2})_(?<year>\\d{2})$"); public SiteConfig config(String siteHeader) { final var matcher = pattern.matcher(siteHeader); return matcher.find() ? SiteConfig.of(matcher.group("country"), matcher.group("year")) : SiteConfig.UNKNOWN; }
Sigue siendo igual de críptico pero al menos es más sencillo saber qué es cada cosa.
Otra ventaja es que IntelliJ comprueba que el nombre coincide con alguno de los declarados en la expresión regular y te avisa si tienes algún error.
No sé si lo usaré algún día, pero está bien saberlo :)
¿Sabías que IntelliJ tiene una opción para testar expresiones regulares? alt+enter > Check RegExp