2009-09-20 4 views
0

약간의 도움이 필요합니다. 패턴과 문자열을 regexlib의 테스터로 파싱 할 때 정상적으로 작동하는 정규식이 있습니다. 그러나 C#에 넣을 때도 마찬가지입니다. 일치하지 않습니다.정규식은 regexlib에서 작동하지만 C# 코드에서는 작동하지 않습니다.

가 여기 내 일치하는 패턴, 두 시도 : 구문 분석

string regPattern = "\\{\\$([^\\$\\}]+)\\$\\}"; 

내 문자열은 데이터베이스에서 제공하고 ToString을 사용한 후 변수에 넣어(). 다음은 regextlib에서 작동하지만 C#에서는 작동하지 않는 문자열 예제입니다 (VS2008의 Text Visualizer 사용). 나는 또한 @와 Regex.Escape를 사용하여 패턴을 선언하는 시도

string regPattern = "\\{\\$([^\\$\\}]+)\\$\\}"; 
Regex.Replace(bodytext.ToString(), regPattern, "",RegexOptions.Multiline); 

: 도움이된다면

<p>1.Age?: -- Select One --<br /> 
2.HowFindProduct?: Friend/Relative Recommendation<br /> 
3.Influencers?: {$InfluencedDecision$}<br /> 
4.WherePurchase?: Office Superstore - i.e. Staples_ Office Depot_ Of<br /> 
5.ReplacementProduct?: This is a replacement to my previous product<br /> 
6.OtherBrands?: {$OtherBrands$}<br /> 
7.Income?: -- Select One --<br /> 
FirstName: John<br /> 
Initial: H<br /> 
LastName: Smith<br /> 
Address1: 123 any street<br /> 
Address2: suite 2<br /> 
City: any city<br /> 
State: CA<br /> 
ZipCode: 55555<br /> 
Country: usa<br /> 
EmailAddress: [email protected]<br /> 
Phone#: 714-555-1212<br /> 
ModelNumber: AXXXX<br /> 
SerialNumber: 23123d234s2s<br /> 
DateofPurchase: 09/09/2009<br /> 
NotifyMe1: on<br /> 
NotifyMe2: on</p> 

그리고 간단한 동안

는, 여기 내가 사용하고있는 코드입니다. 여기에 도움이 필요해.

아이디어가 있으십니까?

답변

1

반환 값을 무시하기 때문에 두 번째 구문은 현재 상당히 무의미합니다. 문자열이 변경되지 않는다는 것을 잊지 마십시오. Regex.Replace을 호출하면 기존 문자열이 변경되지 않습니다. 적절한 대체 작업을 수행하여 새 문자열을 반환합니다. 이렇게하면 :

string regPattern = "\\{\\$([^\\$\\}]+)\\$\\}"; 
string replacedText = Regex.Replace(bodytext.ToString(), regPattern, 
            "", RegexOptions.Multiline); 

다음 replacedText 제거 {$OtherBrands$} 같은 것들 원래이다 - 나는 시도했다 테스트 프로그램에서 해당. 그것이 원하는 것이 아니라면, 실제로하고 싶은 것에 대한 자세한 정보를 제공해주십시오.

는 정규 표현식 패턴은 리터럴 그대로 문자열을 사용하여 명확하게 될 것이라고했다 가졌 :

그것에 대해
string regPattern = @"\{\$([^\$\}]+)\$\}"; 
+0

죄송 예를 들어 그를 입력 (VS에서 훨씬 더 벌어지고있다). 나는 당신의 표현을 시도해 볼 것입니다. 도움 주셔서 감사합니다. –

+0

신성한 톨레도 배트맨! 원래 코드에서 명백한 부분을 놓치는 것만 큼은 없습니다. 나는 패턴에서 너무 집중하여 나중에 블록에서 실행 된 할당 로직을 놓친 문제가 실행 경로가 아니었다. 내가 알아 차리기 전에 아마 많은 시간을 절약 할 수있었습니다. –

관련 문제