2012-04-20 2 views
0

У меня есть шаблон TABLE * some_table * БОЛЬШОЙ READ_ONLY LOTS_OF_OTHER_WORDS {Regex выбора текст между двумя известными словами

Я хочу, чтобы выбрать из БОЛЬШОЙ READ_ONLY LOTS_OF_OTHER_WORDS

Я хочу вырезать все слова после some_table, где some_table - это другое имя таблицы каждый раз. Я пробовал (? < = ТАБЛИЦА \ s (. ?) \ S)., но (. *?), Похоже, не работает.

ответ

0
  • Есть всегда фигурная скобка после слов, которые вы хотите вырезать?
  • Является ли имя some_table всегда одним словом?

Если да, то я хотел бы использовать:

TABLE\s?(\s*[^{]*?){ 

Затем вам нужно заменить матч в первой группе.

EDIT: Я забыл об имени таблицы, которая не должна быть частью матча - обновлена ​​регулярное выражение:

TABLE\s*?\w+\s?([^{]*?){ 

Объяснение:
- найти строку TABLE
- сопрягать первое слово (и позволяют пробелы до и после него) \s*?\w+\s?
- группа: сопрягать все, что это не фигурная скобка ([^{]*?)
- сопрягать кронштейн

+0

Интересно, в теории я думаю, что этот должен работать, но по какой-то причине он захватывает всю линию. Спасибо за это! – user1347047

+0

@ user1347047 - Какова вся строка и что ожидалось? –

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