2013-05-22 3 views
1

В C#, я пытаюсь разделить следующую строкуЭффективный способ при помощи lookarounds для регулярных выражений расколоть

(hello)(world)(hello)(world) 

в массив следующего формата

arr[0] = (
arr[1] = hello 
arr[2] =) 
arr[3] = (
arr[4] = world 
arr[5] =) 
arr[6] = (
arr[7] = hello 
arr[8] =) 
arr[9] = (
arr[10] = world 
arr[11] =) 

настоящее время я использую следующее регулярное выражение выражение для выполнения разделения и оно кажется медленным

Regex.Split(value1, @"(?<=\))|(?=\))|(?=\()|(?<=\()") 

Я не специалист по регулярному выражению, но У меня есть ощущение, что может быть другое выражение регулярного выражения, которое обеспечивает одинаковые функциональные возможности эффективно.

Удивительно, если есть лучшие способы (более эффективные выражения регулярных выражений) для реализации того же раскола в C#?

+1

Как насчет соответствия '[()] | [^()] +' вместо? – Gumbo

+0

Regex.Split (значение1, @ "[()] | [^()] +") {string [7]} [0]: "" [1]: "" [2]: "" [3]: "" [4]: ​​"" [5]: "" [6]: "" – infinity

+0

Матч, не разделенный. – Gumbo

ответ

1

Вы могли бы попытаться соответствовать этим жетоны вместо:

Regex.Matches(value1, @"[()]|[^()]+") 

Здесь картина [()]|[^()]+ матчи либо один ( или ) или последовательность символов, кроме ( и ).

 Смежные вопросы

  • Нет связанных вопросов^_^