.NET에서 정규 표현식을 작성하여 이와 비슷한 모양의 함수 목록에서 전체 함수를 캡처하려고합니다. 정규 표현식, 역 참조 또는 대체 구조
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
}
return result;
}
public string Test5()
{
return string.Format("inner string with bracket{0}", "test");
}
public string Last()
{
return string.Format("inner string with bracket{0}", "test");
}
그래서 나는 마지막 기능 제외한 모든를 캡처합니다
((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*public string))
이
있어 ... 또는이((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*(public string)|$))
이 첫 번째를 제외하고 정확하게 모든 기능을 일치합니다. 첫 번째 기능은 부분적으로 만 일치합니다.
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
} <-- the first capture only get to this point.
아이디어가 있으십니까? 가능한 경우 설명을 입력하십시오.
무엇이 맞습니까? Regexes는 임의로 중첩 된 중괄호를 잘 처리하지 않습니다. –