2012-05-08 2 views
0

Это то, что я пытаюсь сделать:регулярного выражения «нет ничего из двух символов»

Текст: -он oneitis -дв + три + четыре + пяти -six-семи-восьми -nine затем одиннадцать + 1213

Я хочу, чтобы соответствовать:

  1. -он oneitis
  2. -две
  3. + три
  4. + четыре
  5. + пять
  6. -six-семь-восемь
  7. -nine затем одиннадцать
  8. + twleve тринадцать

В основном, игнорируют соответствие '-' в словах, но и соответствие «+ 'если они существуют, и' -»

Это регулярное выражение я использую:/([- +] [^ +] +)/

Я хочу по существу сделать [^ (+) & (-)] +

Или, матч все, что не '+', ни '-' < - то есть (пространство и минус)

Есть ли способ сделать это?

Заранее благодарен! (связывая некоторые инструменты http://rubular.com/)

+2

Даже если это не домашние задания, правила являются более сложными, чем «в основном игнорируют сопрягая + в словах». И вы недостаточно ограничили свою проблему, поэтому любой набор правил, которые мы можем угадать из вашего примера, может быть ошибочным. Я предлагаю вам сесть и точно определить, что у вас есть соответствующие правила. К тому времени вам, возможно, больше не понадобится наша помощь. –

+0

К сожалению, это не ... Мне нравилось домашнее задание ... – mhz

+0

По существу, я хочу иметь «промежуточный» текст/данные. Он находится между «+» и «-», за исключением «-», если он окружен символами. «-» ok – mhz

ответ

1

Одним из вариантов является расщепляется \+|\B-: http://rubular.com/r/tC2zTWZI4v

шпагате каждым + и -, которые после того, как пространство (или любой не алфавитно-цифровой символ).

Это означает, что в некоторых случаях он не будет разбиваться, например +a b-c не будет разделен.

Если вы хотите, чтобы соответствовать вашим словам, и хочу разделить в этом случае, вы можете попробовать:

[+-]([^\s+]*[^+-]*) 

http://rubular.com/r/TqQEAoJ2Yv

+1

Спасибо, Коби, но я искал слова, не разбитые.У меня возникли проблемы с совпадением слов в сочетании с флагами. Я получил ответ сейчас, но спасибо в любом случае! – mhz

2

решение.

([-+](?:[^ ][-]|[ ][^-+]|[^ +-])+) 

http://rubular.com/r/fTSm0pjvEX

+1

Другими словами, используйте оператор чередования в качестве «логического входа». –

Смежные вопросы