2013-01-01 1 views
0

IM 혹은 괄호로 묶인되지 않을 수있다 스트링을 갖는문자열 C 번호를 이용하여 브래킷]로 묶인 경우 정규식 테스트하기

string a = "[Hello world]"; 
string b = "Hello world"; 

진정한 긴 문자열 []가 들어 있으므로 정규식 복귀 다음 있지만 그 목표 :

var c = "hello[ ]world"; 
var isCommandArray = Regex.IsMatch(c, @"\[.*?\]"); // returns true 

감사 패턴의 끝 부분에 대한 패턴의 시작을위한

+0

여기에 정규식이 실제로 필요하지 않습니다. – Anirudha

답변

2

사용 ^$ 아니다.

var isCommandArray = Regex.IsMatch(c, @"^\[.*?\]$") 
1

문자열의 시작과 끝이 일치하도록 정규식을 코딩해야합니다.

^\[.*?\]$ 

^

은 문자열의 시작을 나타내고, $은 끝을 나타냅니다. 당신은 괄호 주위의 공백은 당신이 \s 추가 할 수 있도록하고 싶었다면

: 다른 괄호가 중간에 할 수 있다면, 당신은 사용할 필요가 없습니다

^\s*\[.*?\]\s*$ 
+0

처음 앵커와 끝 앵커를 지정하는 경우 게으른 한정 기호'?'가 필요하지 않다고 생각합니다. – Matthew

+0

@Mathew 아마도 OP의 예에서 나온 것일 것입니다. –

5

Regex :

bool isBracketed = s.StartsWith("[") && s.EndsWith("]"); 

중간에 다른 괄호를 허용하지 않으면 다음을 수행 할 수 있습니다.

bool isBracketed = s.LastIndexOf("[") == 0 && s.IndexOf("]") == s.Length - 1; 
+1

+1 지혜라고합니다 : 필요없는 곳에서는 정규식을 사용하지 마십시오! –

+0

@ CédricRup, 나는 동의하지 않는다. 당신은 가능한 한 자주 정규식을 사용해야합니다 –

+0

@Trikks http://i.imgur.com/nuEF0.png – Rotem