2015-11-06 2 views
0

Что я хочу сделать:Regexp большой текст в JavaScript

От

Sdqweq (65%) 3 : 2 (35%) Dafsas 
1 ноября, 13:15  
Qrad (50%) 2 : 0 (50%) Gherhgw 
29 октября, 13:00 
....long file 

Для

{ 
    first: Sdqweq 
    firstscore: 3 
    second: Dafsas 
    secondscore: 2 
    date: 1 ноября 
} 
{....} 
{....} 

Честно говоря, я не понимаю, сколько в регулярных выражениях, но я не знаю, как разобрать этот текст по-другому. Реально ли строить?

Буду очень благодарен!

UPDATE: обновление такая часть С

UPDATE2 Когда я пытаюсь использовать это regex.exec(matches) где regex = /(.*?)\s*\(\d+%\)\s*(\d+)\s*:\s*(\d+)\s*\(\d+%\)\s*(.*)\s*(.*)/gm и matches = 'text from section' У меня есть выход, как

Sdqweq (65%) 3 : 2 (35%) Dafsas 
    1 ноября, 13:15  , Sdqweq , 3 , 2 ,Dafsas,1 ноября, 13:15 

ответ

0

Простой вариант того, что делать вы хотите, чтобы это было:

/(Team\d+)\s*\(\d+%\)\s*(\d+)\s*:\s*(\d+)\s*\(\d+%\)\s*(Team\d+)\s*(.*)/gm 

https://regex101.com/r/aS0uU9/5


Объяснение:

Помните, что:

  • '\ S' является "Белый символ пробела: Соответствует любой пробел, табуляция или символ новой строки."
  • '\ д' представляет собой любое число
  • '*' означает ноль или более ocurrencies
  • '+' означает, что один или несколько ocurrencies
  • А использование() разграничивает группу.

Тогда у вас есть:

a.- Первая группа начинается с "Team" и затем 1 или более цифр. т.е.: (Команда \ d +)

b.- .. с последующим нулем или более пробелами. т.е.: \ s *

c.- .., за которым следует '(', число (одно или несколько изменений), за которым следует '%', а за ним следует ')'. т.е.: (\ d +%)

d.- .. с последующим нулевым или большим количеством пробелов. т.е.: \ s *

e.- Затем мы ищем другую группу с числом с одним или несколькими ошибками. т.е.: (\ d +)

f.- .. с последующим нулевым или большим количеством пробелов. т.е.: \ s *

g.- двоеточие. т.е.: ':'

h.- .. с последующим нулевым или большим количеством пробелов.т.е.: \ s *

i.- Затем мы ищем другую группу с номером с одним или несколькими ошибками. то есть: (\ d +)

....

z.- И почти в конце мы ищем одного или более пробел «\ с» (который включает в себя «Новой линии» характер) и создать новую группу со всеми следующими данными (датой). то есть: \ S *


Edit (*.): Для того, чтобы сделать регулярное выражение более общий характер:

/(.*?)\s*\(\d+%\)\s*(\d+)\s*:\s*(\d+)\s*\(\d+%\)\s*(.*)\s*(.*)/gm 

https://regex101.com/r/aS0uU9/6

Здесь вместо рисунка TeamNumber мы просто ищем 'что-нибудь' (. означает любой символ)

+0

Отсутствует первый '/', включает в себя «(n%)» в результатах; соответствует всей входной строке? – guest271314

+0

WOW, святой sh ..., отличная работа, но я обновляю часть с 'From', что я хочу построить – Qwe

+0

@ guest271314 спасибо 4 обратная связь !! – mayo