Поскольку я не знаю, что именно вы пытаетесь сделать, трудно дать обоснованный совет, но похоже, что ваше регулярное выражение можно немного улучшить.
Вы действительно пытаетесь сопоставить строки типа (foo)
, [bar]
и |baz|
? Вам не нужен генератор |
внутри классов символов, поэтому если вы не хотите соответствовать третьему примеру здесь, отбросьте |
s.
Тогда, поскольку вы ожидаете строки типа (foo [bar] baz)
, вам нужно разделить два вида скобок, и вы также можете немного ускорить свое регулярное выражение:
@"^to |\\([^)]*\\)|\\[[^\\]]*\\]"
Сначала проверяется to
в начале строки, затем идет поиск открывающей скобки / скобки, всего, кроме закрывающих скобок / скобок и закрывающей скобки / скобки. Это требует меньше возврата, так что, вероятно, немного быстрее.
Вы не сможете обрабатывать вложенные скобки / скобки одинакового вида ((foo (bar) baz)
) с одним регулярным выражением, потому что это больше не является регулярным - если вы не запускаете операцию замены регулярного выражения несколько раз, по одному разу для каждого уровня вложенности , Таким образом, приведенный выше пример будет удален, если вы запустите regex replace дважды.