기본적으로 거대한 클래스 세트 (참조 용 C#) 인 제 3 자의 파일이 제공되는 성가신 문제가 있습니다. 지금은이 클래스의 여러 개정판을 보유하고 있으며 일부 알려지지 않은 이유로 제 3 자 개발자가 파일을 수정하여 개정판으로 옮깁니다. 따라서 이전 버전의 변경 사항에 문제가 있고 시간이 오래 걸릴 수 있습니다.텍스트 분석/정규식을 사용하여 큰 텍스트 파일을 여러 개의 작은 파일로 분할
public class Abc
{
...
}
public class Xyz
{
...
}
따라서, 나는 (그 클래스의 이름을 따서 명명, 예를 들어 Abc.cs, Xyz.cs 등) 여러 파일에 자신의 전달 파일을 분할 할 수 있도록하고 싶습니다. 몇 가지 파일을 추가하겠습니다 만, 적어도 제공된 파일에서 동일한 스크립트를 실행할 수 있고 생성 된 파일에 diff를 수행하여 해당 특정 클래스의 수정본을 판별 할 수 있으므로 변경 사항을 쉽게 볼 수 있습니다 .
나는 Powershell과 Regex의 경험이 모두 있는데, PS에서 가능할 것이라고 생각했지만 솔직히 머리가 벽돌 벽에 부딪쳤다. 내 다소 절름발이 시도에서, 나는 그 파일에서 각각의 닫는 클래스 대괄호 (}
)를 추출 할 수 있었다. 나는 또한 "\r\npublic class "
과 "\r\n}"
(\r\npublic class(.*)\r\n}\r\n
) 사이의 모든 정규식을 시도했지만이 중 첫 번째 클래스 만 출력되거나 전체 파일이 이동되거나 전혀 작동하지 않게됩니다. 이것은 분명히 내가 public class
의 인스턴스를 반복하지 않는다는 것을 보여 주지만 나의 예제는 멀티 라인 솔루션보다는 CSV를 분리하는 데 더 적합한 솔루션과 매우 흡사합니다.
모든 경우에 public class
선언 및 닫기 괄호가 새 줄에 있으므로이 부분이 튀어 나오는 가장자리가 없어야합니다. 파일은 특별히 크지 않으며 (< 2MB), Get-Content
을 통해 읽는 시간은 전혀 없습니다. 나의 초기 연구는 내가 StreamReader
을 사용할 것을 제안했지만, 그것은 나의 유스 케이스에 대해 불필요한 잔인 함이다.
올바른 방향으로 어떤 포인터가 크게 여기에 감사하겠습니다. 사전에
많은 감사
이것은 [Roslyn] (https://github.com/dotnet/roslyn)의 일일 것입니다. – IInspectable