У меня возникли проблемы с поиском хорошего Regexp. я получил этот текст в качестве входных данных:Регулярное выражение с кавычками
settings= ShouldAppears1
setting_ -> "ShouldAppears2"
setting__ = 'ShouldAppears3' #ShouldNotAppear
setting___ = "MissingEndQuote.ShouldNotAppears
В результате я хотел бы получить массив:
[0] => settings=ShouldAppears1
[1] => settings=ShouldAppears2 or [1] => settings="ShouldAppears2"
[2] => settings=ShouldAppears3 or [2] => settings="ShouldAppears3"
я получил некоторые проблемы, потому что я не хочу результата, если есть отсутствующая котировка конца, и я не могу найти обратную ссылку.
То, что я получил до сих пор это регулярное выражение:
(?i)([A-Z_]{3,}\s{0,1}[=><-]{1,2}\s{0,1}(['"]?).+?\2)
Проблема заключается в том, что я получил этот результат:
0 => settings= A
1 =>
2 => setting_ = "Appears"
3 => "
4 => setting__ = "Appears"
5 => "
6 => setting___ = "
7 =>
Я хотел бы, чтобы не видеть линии 1,3,5,7 но я не могу сделать (? =) группу без захвата, но все же могу использовать обратную ссылку.
Спасибо за вашу помощь,
EDIT
я не могу изменить, как регулярное выражение называется в сценарии я могу работать только на Regexp. Результатом является только глобальный матч, а не глобальный полный матч. Если я немного изменить свой регулярному_выражению по:
(?i)(\w+\s*(?:=|->)\s*(?:("|')\w+\g{2}|\w+))
я
0 => settings= ShouldAppears1
1 => setting_ -> "ShouldAppears2"
2 => "
3 => setting__ = 'ShouldAppears3'
4 => '
Это почти идеальный, но есть способ, чтобы избавиться от [2] и [4]? Т.е. установить ("|") не учитываются, но все еще быть в состоянии поддержать ссылку на него
Спасибо за ответ. Я бы это иметь только группу 0. Я редактирую сообщение, чтобы сделать вас под лучше стоять – timmalos