Tengo una cadena como esta:
"First player vs. Second player     Percentage%" El primer jugador y el segundo jugador pueden ser varias palabras y antes del Porcentaje% estoy usando tres   . ¿Cómo puedo dividir esta cadena para tener una matriz que contenga el primer jugador y el segundo jugador (el porcentaje no es necesario)?
Esto debería hacer lo que quieras:
const data=["First player vs. Second player     Percentage%", "Another first player vs. a second one     Percentage%", "One vs. Two    Two Percentage%"]; const res = data.map(s=>s.match(/(.+?)\s+vs\.\s+(.+?)\s*\ \ \ /).slice(1)); console.log(res) En la expresión regular estoy buscando dos grupos coincidentes (.+?) . Estas son coincidencias no codiciosas, ya que van seguidas o precedidas por \s+ (uno o más caracteres de espacio en blanco) y no quiero estos caracteres de espacio en blanco en mis grupos coincidentes.
Algo como esto debería hacerlo
const test1 = 'First player vs. Second player Percentage&emsp' const test2 = 'Ryu vs. Ken 100&emsp' const extractPlayers= (string) => { const [firstPlayer, rest] = string.split(' vs. ') const secondPlayer = rest.split(' ').filter(x => x).slice(0, -1).join(' ').trim() return {firstPlayer, secondPlayer} } console.log(extractPlayers(test1)) console.log(extractPlayers(test2))