2013-12-04 3 views
1

Нам необходимо регулярное выражение, чтобы определить синтаксис скорости Apache, как комментарии и #foreachRegex чтобы соответствовать строку, которая не начинается с

Ex:

##Commenline #foreach 
    #foreach($var in $vars) 

    #end 

Здесь мы хотим регулярное выражение, которое соответствует #foreach во второй строке, но не в первой строке. Как я могу построить RegEx для того же самого.

+0

Не используйте регулярное выражение для этого. Regex ужасен при вложенных вещах, таких как вложенные условия и циклы. – h2ooooooo

+1

Якорь для начала строки и разрешить только пробелы перед '# foreach' должен делать трюк. –

ответ

0

Вы можете использовать выражение типа:

(?m)^[ \t]*#(\w+) 

соответствует ли второй #foreach и #end.

Он соответствует началу строки, за которой следует любое количество пробелов, # и количество символов слова (# не включено, поэтому комментарии не совпадают).

(?m) Используется для установки многострочного режима. Если ваш аромат регулярного выражения не поддерживает использование соответствующего флага в вашем API-интерфейсе регулярного выражения.

0

Попробуйте это:

^\s*#.*$ 

Это будет захватывать всю линию ваших целей. Если вы хотите только первое слово, попробуйте следующее:

^\s*#\w+ 
Смежные вопросы