What is the Regular Expression to find the strings starting with [ and ending with ]. Between [ and] all kind of character are fine.
4 Answers
[ and ] are special characters in regular expressions, so you need to escape them. This should work for you:
\[.*?\]
.*? does non-greedy matching of any character. The non-greedy aspect assures that you will match [abc] instead of [abc]def]. Add a leading ^ and trailing $ if you want to match the entire string, e.g. no match at all in abc[def]ghi.
- 134,091
- 45
- 190
- 216
^\[.*\]$
will match a string that starts with [ and ends with ]. In C#:
foundMatch = Regex.IsMatch(subjectString, @"^\[.*\]$");
If you're looking for bracket-delimited strings inside longer strings (e. g. find [bar] within foo [bar] baz), then use
\[[^[\]]*\]
In C#:
MatchCollection allMatchResults = null;
Regex regexObj = new Regex(@"\[[^[\]]*\]");
allMatchResults = regexObj.Matches(subjectString);
Explanation:
\[ # match a literal [
[^[\]]* # match zero or more characters except [ or ]
\] # match a literal ]
- 328,213
- 58
- 503
- 561
-
I'm not sure whether yours or thecoop's answer is the best, but I assume yours because the OP never mentioned that there should be ANY characters between the [ and ], and therefore your `*` is a better match than thecoop's `+`. – Bazzz Feb 21 '11 at 13:33
This should work:
^\[.+\]$
^ is 'start of string'
\[ is an escaped [, because [ is a control character
.+ matches all strings of length >= 1 (. is 'any character', + means 'match previous pattern one or more times')
\] is an escaped ]
$ is 'end of string'
If you want to match [] as well, change the + to a * ('match zero or more times')
Then use the Regex class to match:
bool match = Regex.IsMatch(input, "^\[.+\]$");
or, if you're using this several times or in a loop, create a Regex instance for better performance:
private static readonly Regex s_MyRegexPatternThingy = new Regex("^\[.+\]$");
bool match = s_MyRegexPatternThingy.IsMatch(input);
- 45,220
- 19
- 132
- 189
-
The worked expression is \[.*?\], however your description is helpful too – KBBWrite Feb 21 '11 at 13:34
You need to use escape character \ for brackets.
Use .+ if you like to have at least 1 character between the brackets or .* if you accept this string: [].
^\[.*\]$
- 4,715
- 3
- 36
- 58