Разбор строк JavaScript - PullRequest
       2

Разбор строк JavaScript

0 голосов
/ 02 августа 2011

Я пытаюсь разобрать строку в этом формате

[something](something something) [something](something something)

и я хочу разбить каждый пробел, который не находится между скобками?

Я пытался использовать js string.split с этим в качестве регулярного выражения /[^\(].*\s+.*[^\)]/g, но это не работает?Любые предложения приветствуются: -)

РЕДАКТИРОВАТЬ: я не хочу публиковать это как ответ, потому что я хочу оставить его открытым для комментариев, но я наконец нашел решение.

var a = "the>[the](the the) the>[the](the the) the"
var regex = /\s+(?!\w+[\)])/
var b = a.split(regex)
alert(b.join("+++"))

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Ваш вклад всегда так последовательн?Если это так, это может быть так же просто, как разбить строку на ') ['

Если это не так, возможно ли просто взять то, что находится между [ и )?Или происходит какое-то вложение?

1 голос
/ 02 августа 2011

Вы используете не тот инструмент для работы.

Как было упомянуто в этой известной публикации , регулярные выражения не могут анализировать нерегулярные языки, а проблема "сбалансированных скобок" не может быть описана обычным языком.

Вы пытались написать парсер вместо этого?

РЕДАКТИРОВАТЬ:

Кажется, вы наконец-то пояснили, что вложение не является обязательным требованием.В этом случае я бы предложил решение gnur.

0 голосов
/ 02 августа 2011

Это регулярное выражение будет делать именно то, что вы просили, и ничего более:

'[x](x x) [x](x x)'.split(/ +(?![^\(]*\))/);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...