프로그래밍/의문

c# Regex의 패턴은 캐싱 된다.

제페 2019. 5. 10. 13:45
반응형

정규식이 함수 안에 있으면 정규식 인스턴스가 만들어질 때마다 패턴이 컴파일이 되는 건가 해서 Regex를 static 인스턴스로 만들어두고 사용했었다.

static Regex regex = new Regex("My Pattern");
// ...
bool IsValid(string str)
{
	return regex.IsMatch(str);
}

찾아보니 최근 사용한 15개 정도의 정규식은 캐싱된다고 한다.

캐싱된 정규식을 이용하려면 다음과 같이 하면 된다.

bool IsValid(string str)
{
	string pattern = "My Pattern";
	return Regex.IsMatch(pattern, str); // 정규식 패턴 풀에서 가져옴
}

https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/best-practices

 

.NET의 정규식에 대한 모범 사례

.NET에서 효율적이고 효과적인 정규식을 만드는 방법을 알아봅니다.

docs.microsoft.com

서로 다른 정규식이 계속 만들어지는 게 아니라면 함수 내에서 정규식을 인스턴스화 시켜도 될 거 같다.

반응형