Регулярное нахождение второй строки - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь получить последнее слово в следующих строках.

Примерно через 45 минут я не могу найти правильную комбинацию косых черт, тире и скобок.

Самое близкое, что у меня есть, это

/(?![survey])[a-z]+/gi

Это соответствует следующим строкам, за исключением "требуется", оно возвращает совпадение "искомый" ЯПредполагая, что это потому, что re в слове опроса.

survey[1][title]
survey[1][required]
survey[2][anotherString]

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы используете набор символов , который исключит любые символов из числа первых символов в совпадении, что не то, что вам нужно.Использование простого отрицательного взгляда было бы началом:

(?!survey)[a-z]+

Но вы также хотите сопоставить слово final , что можно сделать путем сопоставления символов слова, за которыми следует \]$ -то есть через ] и конец строки:

[a-z]+(?=\]$)

https://regex101.com/r/rLvsY5/1

Если вы хотите быть более эффективным, сопоставьте всю строку , но запишите, что находится в квадратных скобках в группе захвата - в результате будет получена последняя повторная захваченная группа:

survey(?:\[(\w+)\])+

https://regex101.com/r/rLvsY5/2

0 голосов
/ 07 декабря 2018

Один из способов решить эту проблему - сопоставить всю строку и захватить только ту часть, которая вам нужна.

survey\[\d+\]\[([a-z]+)\]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...