Estoy trabajando en una extensión para el código vs que agrega compatibilidad con la sintaxis de Skript.
Estoy atascado en que no puedo seleccionar el cuerpo del bloque de código. En total, hay varios de ellos en la sintaxis de Skript (comandos, funciones, eventos y algunos más). Cada bloque comienza con una sangría cero (es sensible a la sangría). He proporcionado un ejemplo de sintaxis de Skript a continuación.
on join: set the player's gamemode to spectator join_player(player) command /join [<player>]: trigger: if arg-1 is not set: join_player(player) else: player has permission "op" join_player(arg-1) function reset_arena(): set all blocks within {loc1} and {loc2} to snow blockEl autor original de esta extensión usó esta construcción. Pero no funciona con un número impar (\r\n|\r|\n). También define la última línea del documento como no relacionada con el último componente.
if (search = component.match(/^(?<component>(command\s?(?<head>[^\:]*))\:?(.*)(?<body>((\r\n|\r|\n)([^a-zA-Z][^\r\n]*)?)*))/i)?.groups) { return this._createCommand(skDocument, range, search.component, search.head, search.body); }Dígame cómo hacer correctamente una expresión regular para que se seleccione el cuerpo del componente. Muchas gracias
Creo que necesitas algo como esto:
(?<component>^\w+ +(?<head>.*)\n(?<body>(?:[\s\S](?!\n\w))*))Se dispondrá de 3 grupos para cada partido:
- componente
- cabeza
- cuerpo
Puede tener una mejor idea de cómo funciona y realizar las modificaciones que necesite en el siguiente enlace: https://regex101.com/r/0VaKhR/2