2016-11-16 2 views
1

Я пытаюсь написать синтаксис Sublime Text 3 для EViews и вам нужно найти регулярное выражение, которое выбирает второй элемент в списке пар тогда и только тогда, когда первый элемент пары появляется в начале строки (игнорируя любые ведущие пробелы).Regex найти второе слово в списке парных слов

я могу сделать это для одной пары, скажем if then с

^\s*if.+(then) 

но мне кажется, очень неуклюжий сделать это отдельно для каждой пары.

Наверняка есть более умный способ?

Полный список пар if then, for to, to step, else if и subroutine local.

ответ

0

Использование this regex:

\s*\bif\b.*?\b(then)\b|\s*\bfor\b.*?\b(to)\b|\s*\bto\b.*?\b(step)\b|\s*\belse\b.*?\b(if)\b|\s*\bsubroutine\b.*?\b(local)\b 

Группа 1 соответствует then, группа 2 матча to, группа 3 соответствует step, группа 4 соответствует if, группа 5 соответствует local, только если им предшествует правильное слово.

0

Вы можете попробовать это:

^\s*if\s+\b(then)\b.*|^\s*for\s+\b(to)\b.*|^\s*to\s+\b(step)\b.*|^\s*else\s+\b(if)\b.*|^\s*subroutine\s+\b(local)\b.* 

Убедитесь, что точка соответствует новой линии не выбран