Я пытаюсь разобрать строку типа:.Net C# регулярное выражение для разбора метод/свойство цепочки вызовов
.A.B[C].D(E).F("(G)/{H})", "1" == "1").I.J[K]
где А, В, I, J являются имена свойств, D, F названия метода, E, "(G)/{H})", "1" == "1" и значения индекса C и K. , Параметры могут содержать любые символы, и строка может содержать любое количество свойств и/или методов.
Я ищу регулярное выражение, которое будет выполнять эту работу. До сих пор я придумал
(?<=\.)(?< PropertyOrMethodName>\w+)((\\[(?< Index>\w+)\\])|((?< Open>\\()(?< Parameters>.+)(?<-Open>\\))(?(Open)(?!))))?
, но это не очень хорошо, например, для вышеприведенного образца захватываются D (E) .F ("(G)/{H})", "1" == "1") вместе.
Это, мне, по крайней мере, звучит * немного * немного похоже на попытку разобрать HTML с регулярным выражением - только о выполнимо в ** некоторые ** случаи, но если вы хотите что-то надежное, которое справляется с краевыми случаями, вам может понадобиться написать анализатор на основе состояний. – 2010-11-30 05:54:34