2016-01-08 8 views
2

Привет Мне интересно, если есть регулярное выражение, которое может сделать следующее:Есть ли регулярное выражение, возвращающее подстроки из строки, которые не соответствуют определенному списку конкретных подстрок?

Выберите все подстроки из строки, что:

  • начать с & и
  • имеет п число символы после & (п> = 0)

И те, подстроки НЕ

  • &
  • '
  • <
  • > или
  • "

Например, если строка

'Stewie & Brian &partners in crime;' 

Есть ли регулярное выражение, которое вернет только подстроку &partners?

Моя интуиция говорит «нет», потому что мне нужна контекстная свободная грамматика, но как я могу это доказать? Есть ли регулярное выражение, чтобы проверить его с помощью леммы о перекачке?

Или существует регулярное выражение, и моя интуиция просто неверна?

Спасибо

+0

Привет, я взял на себя смелость, чтобы переформатировать свой пост. Помещая короткие тексты между обратными окнами, вы можете отформатировать их как код (так что вам не нужно вставлять пробел между '&' и 'apos;', чтобы сохранить литеральный текст). Более длинные тексты и многострочные образцы кода могут быть отформатированы таким образом, отступывая их на четыре пробела. Оба могут быть достигнуты путем выбора текста и нажатия Ctrl-K. Возможно, вам захочется взглянуть на помощь редактора для получения большего количества этих советов по форматированию. Помимо этого, добро пожаловать в StackOverflow! –

ответ

2

Sure:

&(?!(amp|apos|lt|gt);)\S{4,} 

при п = 4

См live demo.

Ключевым моментом здесь является отрицательным взгляд вперед (?!(amp|apos|lt|gt);), который утверждает (без потребляющего ввода), что сразу же после ввода делает не матч (amp|apos|lt|gt);

+0

большое спасибо –

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

  • Нет связанных вопросов^_^