Я пытаюсь найти с помощью регулярных выражений Visual Studio (https://msdn.microsoft.com/en-us/library/2k3te2cs.aspx) все вызовы Assert.IsTrue, которые передают только логический аргумент, например Assert.IsTrue (parameter) быть одним и Assert.IsTrue(parameter, "message")
wouldn ' t.Visual studio найти все Assert.IsTrue, у которых нет сообщения
Для простых вещей, Assert.IsTrue\(([a-zA-Z ]+)\)
делает трюк, это работает для приведенного выше примера, но не для вещей, когда есть оценки, например Assert.IsTrue (2> 3). Для этого я попытался использовать Assert.IsTrue\((.+[^,])\)
, чтобы он соответствовал всему, что не имеет «,», но это только фильтрует, когда он находится в конце, я не уверен, как фильтровать запятые внутри.
Наконец-то, что я действительно хочу сделать (что я не уверен, возможно ли это с помощью регулярных выражений), это найти Assert.IsTrue, которые имеют только один параметр, но этот параметр может быть вызовом метода, поэтому он может имеют запятые или нет, что-то вроде Assert.IsTrue(isTrue(p1,p2))
Regex не может отличить 'IsTrue' от' CountElements', поэтому последнее требование невозможно. Однако вы можете предположить, что все имена булевых методов начинаются с Is, тогда это возможно. Пожалуйста, уточните требования и предоставьте обобщенные примеры , тогда можно будет ответить на вопрос. –
Я боялся, что это будет невозможно. Вызов метода может иметь любое имя и любое количество параметров, и он может быть вызван из объекта или нет: «Assert.IsTrue (object? .methodName ({p1,} *)) ', поэтому, пример e Я предоставил возможность, другой может быть «Assert.IsTrue (cat.eatsMouse (mouse1, mouse2))» или без параметров и т. д. Если это невозможно, есть ли способ исключить «,» внутри круглых скобок ? 'Assert.IsTrue \ ((. + [^,]) \)' Только исключает, когда, находится в конце, но не тогда, когда есть что-то после и до) –
Прошу прощения, я не понимаю что означает «исключить запятую внутри круглых скобок». Пожалуйста, укажите примеры, которые вы хотите сопоставить, и что вы хотите избежать, чтобы соответствовать. Чтобы просто совместить 'Assert.IsTrue()', где внутри круглых скобок может быть только один метод, вы можете использовать ['Assert \ .IsTrue \ ([^(),] * (?: \ ([^()] * \) [^(),] *) * \) '] (http://goo.gl/GXBWH3), но он ненадежен. –