Регулярное выражение для идентификации текста, заключенного в круглые скобки вместе с круглыми скобками в powershell.
ССЫЛКА ПОКУШЕНИЯ НА REGEX101:https://regex101.com/r/lrBKfd/2[^]
У меня есть следующий код для идентификации одной или нескольких групп текста внутри круглых скобок (вместе с круглыми скобками):
\((?!([^)]*\b(ARR)\b[^(]*)).*?\)
Я попытался добавить положительное утверждение Lookbehind, чтобы оно идентифицировало только текст, заключенный в круглые скобки, когда ему предшествует определенный шаблон:
(?<=NA - FY\d\d [A-Z][A-Za-z][A-Z]|(?<=NA - FY\d\d [A-Z][A-Z][A-Z][A-Z])) \((?!([^)]*\b(ARR)\b[^(]*)).*?\)
Вот некоторые примеры имен папок, которые я использую для проверки этого выражения:
NA - FY17 JCIG (Joint Coord Integration Grp) briefs NA - FY17 JIPT (Joint Integr Product Tm) briefs NA - FY17 SoW (Statement of Work) NA - FY17 SRRB (Serv Requi Review Brd) Quad chart NA - FY17 UFR (Unfunded Plan) - CYD (Current Year) NA - FY17 DR (Directors Reviews) briefs NA - FY17 PP (Phasing Plans) NA - FY17 Funding Docs MVSOT (Maritime Vessel)Он делает то, что я хочу, не захватывая скобки в последних 4 строках текста. Проблема в том, что он не захватывает обе группы текста, заключенные в круглые скобки в строке над ними. В этой строке текста
NA - FY17 UFR (Unfunded Plan) - CYD (Current Year)он больше не захватывает 2-ю группу текста в скобках. Мне дали регулярное выражение, которое захватывает текст в скобках, поэтому я не совсем уверен, как это работает, но я почти уверен, что положительное утверждение Lookbehind правильно. Может ли кто-нибудь сказать мне, что я упускаю?
Что я уже пробовал:
Ссылка попытки на REGEX101:https://regex101.com/r/lrBKfd/2[^]
Попробовали негативный взгляд сзади ((?
[no name]
Это обязательно должно быть регулярное выражение? Почему бы вместо этого не использовать Linq?
Member 14623559
Спасибо. Не знаком с Linq. Я знаю, что это можно сделать как регулярное выражение, и это то, с чем я знаком.
[no name]
Вы бы предпочли решение Linq вместо этого? Регулярное выражение дорого стоит, когда речь заходит о производительности, поэтому рекомендуется свести его к минимуму.