2015-04-18 2 views
1

Я пытаюсь написать выражение регулярного выражения, которое соответствует всему тексту на нескольких строках от одного символа до другого , если только строка начинается с первого символа. Тогда я хочу, чтобы не соответствовал нескольким строкам, пока мы не дошли до определенного символа.Соответствие нескольких строк, за исключением некоторых строк

Так что это как выражение внутри выражения.
Вот пример:

keyword = [ 
    key = {value} 
    key1 = [ 
     key2 = {balue} 
     key2 = {balue} 
    ] 
] 

keyword = [ 
    key = {value} 
] 

Я хочу, чтобы соответствовать все в квадратных скобках, кроме случаев, когда речь идет о ключом1. Он должен игнорировать все внутри квадратных скобок внутри ключа1, а затем поймать все в квадратных скобках следующего ключевого слова.

У меня есть регулярное выражение, чтобы соответствовать все внутри квадратных скобок:
\[([\s\S]*?)\
, но он не принимает во внимание второй набор квадратных скобок. Как я могу учесть это?

+3

Итак, где ваше регулярное выражение? Какой двигатель регулярного выражения вы используете? Не могли бы вы показать свою попытку, скажем, на http://regex101.com? –

+1

Является ли ваш вход ограничен только одним уровнем вложенных скобок или ваш вход допускает N уровней вложенных скобок? Если он разрешает N вложений, эта проблема станет бесконфликтной, и вы не сможете использовать регулярное выражение для строгого захвата. –

+0

@MichaelRecachinas Он допускает только 1 уровень гнездования –

ответ

1

используйте специальный символ, который не существует в вашей строке, например: '¬' Затем поместите его в точках, которые вы хотите запустить своим регулярным выражением. Затем сделайте [^ ¬] + yourregex [^ ¬] +

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