Цитата(od0201 @ 22.4.2014, 23:05 ) | | Пытаюсь искать с тексте строку из массива строк, если в строке встречается не парная ")" или "(", ругается. |
Скобки в регулярных выражениях являются специальными символами, так что, если ты ищешь скобку в тексте, то экранировать обратным слешем обязательно, независимо от того, парные они или нет, поскольку если ругаться не будет - это еще не значит, что найдет то, что надо.
Цитата(od0201 @ 22.4.2014, 23:05 ) | | если ли другая альтернатива |
Есть, но она тебе вряд ли понравится. Можно указать скобку, как символ юникода.
Цитата(od0201 @ 22.4.2014, 23:05 ) | | Интуиктивно чувствую что нужно применить @, но опыта маловато в C# |
Если ты пишешь регулярку прямо в коде, то это очень желательно сделать в любом случае, иначе просто запутаешься. Но если ты этого не делаешь(подчеркиваю, это плохая идея), то вместо одного слеша пиши два, например в случае со скобкой это будет выглядеть так: "\\(".
Если регулярка достаточно сложная, то лучше напиши ее в отдельном файле, добавь его в ресурсы и бери оттуда. Тут есть несколько преимуществ: не надо втискивать регулярку в ограничения строковых литералов, можно использовать многострочный текст и отступы и таким образом отформатировть текст для более удобного чтнения (надо использовать флажок IgnorePatternWhiteSpace), ну и можно воспользоваться какой-нибудь внешней программой для редактировния и тестирования регулярок ( типа https://reggie.codeplex.com/). |