Пожалуйста, я стараюсь, чтобы соответствовать следующие строки в файле:номера Совпадение в квадратных скобках
test/test/abc_xyz[2][0]/abc
test/test/abc_xyz[2]/abc
test/test/abc_xyz/abc
Я попытался следующие действия с помощью регулярных выражений в сценарии TCL:
set match [regexp {^.*\/*\_xyz(|\[[0-9]{1,}\]|\[[0-9]{1,}\]\[[0-9]{1,}\])\/abc} $line extracted_string ]
Используя это регулярное выражение I удалось извлечь эти строки:
"test/test/abc_xyz[2]/abc"
"test/test/abc_xyz/abc"
Но не смог каким-либо образом извлечь строки, подобные этому:
test/test/abc_xyz[2][0]/abc
Может ли кто-нибудь сказать мне, что я могу пропустить?
Вашего регулярное выражения работало me (в тесте на основе java), но: (1) вы можете использовать '+' вместо '{1,}' (2) Я бы использовал необязательную группу, а не группу ORs '^. * \/* \ _ xyz (\ [[0-9] + \]) * \/abc' – beerbajay
проверить мой ответ –
Можете ли вы поместить больше кода, чтобы проиллюстрировать, как вы читаете файл и где происходит результат? Регулярное выражение само по себе работает нормально, хотя некоторые улучшения могут быть сделаны на нем, чтобы сделать его более эффективным. – Jerry