any way would be fine. Perl, python, ruby...
You can match this regex
\(.*?\)
Edit:
The above regex will also include the brackets as a part of matched string. To avoid getting the brackets as a part of match (i.e. only match string inside the starting and ending bracket, excluding brackets) you may use below regex.
(?<=\().*?(?=\))
>>> import re
>>> regex = re.compille("\(([^)]*)\)")
>>> test = "This is my (big <strong>Test</strong>)"
>>> result = regex.match(test)
>>> print result.groups()
big <strong>Test</strong>
>>>
This is a working example for Python, though the regex should be similar for any language.
Do you only want to match outer braces?
For example:
In Python:
s = "(here is some text for you (and me))"
import re
print ''.join(re.split(r"^\(|\)$", s))
# Returns "here is some text for you (and me)"
Otherwise:
s = "(here is some text for you (and me))"
import re
print [text for text in re.split(r"[()]", s) if text]
# Returns "['here is some text for you ', 'and me']"
In perl, you can use this one,
Have a look
my $test = "Hello (Stack Overflow)";
$test =~ /\(([^)]+)\)/;
my $matched_string = $1;
print "$matched_string\n";
OUTPUT:
Stack Overflow
On capturing groups
A capturing group, usually denoted with surrounding round brackets, can capture what a pattern matches. These matches can then be queried after a successful match of the overall pattern.
Here's a simple pattern that contains 2 capturing groups:
(\d+) (cats|dogs)
\___/ \_________/
1 2
Given i have 16 cats, 20 dogs, and 13 turtles
, there are 2 matches (as seen on rubular.com):
16 cats
is a match: group 1 captures16
, group 2 capturescats
20 dogs
is a match: group 1 captures20
, group 2 capturesdogs
You can nest capturing groups, and there are rules specifying how they're numbered. Some flavors also allow you to explicitly name them.
References
On repeated captures
Now consider this slight modification on the pattern:
(\d)+ (cats|dogs)
\__/ \_________/
1 2
Now group 1 matches \d
, i.e. a single digit. In most flavor, a group that matches repeatedly (thanks to the +
in this case) only gets to keep the last match. Thus, in most flavors, only the last digit that was matched is captured by group 1 (as seen on rubular.com):
16 cats
is a match: group 1 captures6
, group 2 capturescats
20 dogs
is a match: group 1 captures0
, group 2 capturesdogs