2010-07-25 4 views
2

Мне нужно написать парсер аргументов, он передается в виде разделителя строки ala {a, b, c}, запятой с пробелом после него, но его можно экранировать с помощью канала "|" перед этим. Поэтому я подумывал написать регулярное выражение, например, /[^\|], /, и затем удалить все escape-символы. Но при использовании этого он будет разделяться символом перед разделителем.Ruby Split By Part of Regex

Как я должен выполнить то, что я ищу?

ответ

3

Если вы используете версию Ruby версии 1.9, вы можете разбить на /(?<!\|),/.

(?<!\|) является отрицательным утверждением lookbehind, означающим «обеспечить, чтобы предыдущий символ не был |».

+0

Ах! Я использовал Rubular для проверки своего регулярного выражения, и он не упоминает об этом, поэтому я никогда не знал об этом. Благодаря! – Randuin

+0

Насколько я знаю, Rubular использует движок Ruby 1.8 regex, и это еще не знает lookbehind. –