2013-10-21 2 views
0

다음 예제 코드는 linqpad에 있습니다. linqpad에 복사/붙여 넣기하고 언어 C# 문을 선택하여 실행하십시오.백분율을 사용하는 와일드 카드 검색

현재 'AB % C'는 AB C 와만 일치하며 %를 SQL과 같이 0 개 이상의 문자와 일치 시키길 원합니다.

// Define Stock Items 
List<StockItem> stockItems = new List<StockItem>(); 

stockItems.Add(new StockItem{ 
Id = 0, 
Code = "444B", 
Description = "AB C" 
}); 

stockItems.Add(new StockItem{ 
Id = 0, 
Code = "11221", 
Description = "ABC" 
}); 

// Regex Search of Stock Items 
string searchString = "AB%C"; 
string regexSearch = searchString 
       .Replace("*", ".+") 
       .Replace("%", ".+") 
       .Replace("#", "\\d") 
       .Replace("@", "[a-zA-Z]") 
       .Replace("?", "\\w"); 
Regex regex = new Regex(regexSearch); 

List<StockItem> results; 
results = stockItems.Where(s => regex.IsMatch(s.Description)).ToList(); 

results.Dump(); 

} // Bracket defines end of logic so we can declare classes next 

// StockItem Class 
internal class StockItem 
{ 
public int Id {get; set;} 
public string Code {get; set;} 
public string Description {get; set;} 
// } Don't close class for linqpad! 

내가 this stackoverflow thread

답변

3

+에서 정규식을 획득하고, 당신은 * 대신 "0 개 이상"인 필요 "하나 이상의"의미

.Replace("%", ".*") 
+0

감사 알렉세이을 - 나는거야 내가 생각하는 정규식에 솔질을해야합니다. – John