2009-12-14 6 views
1
나는 웹 사이트 검색을 구현하고 사용자가 아래의 코드를 사용하여 검색 한 단어를 강조하기 위해 노력하고

:정규식 교체 케이스 Insensitivty 문제

그러나
data = Regex.Replace(data, Model.SearchCriteria, "<strong>" + Model.SearchCriteria + "</strong>", RegexOptions.IgnoreCase); 

데이터가 "나는 캐나다 북쪽을 향해 갔다"인 경우와를 사용자가 "북쪽"을 검색하면 북쪽이 강조 표시된 상태에서 "나는 북쪽으로 갔다"라는 결과가 표시되지만 실제 데이터가 약간 잘못 대체되었습니다.

사용자가 검색 한 내용을 강조 표시하면서 반환 된 데이터를 유지할 수 있습니까?

+0

정규식 무엇입니까? –

답변

5

. $1을 사용하여 대체 문자열의 인덱스로이 그룹을 참조 할 수 있습니다. 그러면 원래 일치 텍스트가 사용됩니다. Regex.Replace

+0

전체 일치를 포함해야하는'$ 0'을 사용할 수 없습니까? 괄호를 추가 할 필요가 없습니까? –

+0

@Tim, 그 접근법도 잘 작동합니다. – JaredPar

0

문서에서 "North"를 검색 문자열 "north"로 바꿉니다. 검색 구문 대신 일치하는 구문으로 바꾸십시오. 당신은 이름없는 그룹으로 배치 검색 기준 주위에 괄호 넣기 명시 검색 기준

data = Regex.Replace(
    "("+Model.SearchCriteria+")", 
    "<strong>$1</strong>", 
    RegexOptions.IgnoreCase); 

대 교체 된 문자열로 원본 텍스트를 넣어 대체 패턴을 사용하기 위해 필요한이 경우

+0

내 질문을 제대로 읽었는지 모르겠다. 나는 북쪽이 북쪽으로 바뀌고 있다는 것을 알고있다. – Jon

0

의 대체 문자열에

정보이 시도 :

Regex.Replace("I went North towards Canada", "(" + "north + ")", (Match match) => 
{ 
    return "<strong>" + match.Value + "</strong>"; 
}, RegexOptions.IgnoreCase);