Regular Expression for matching parentheses
Two options:
Firstly, you can escape it using a backslash -- \(
Alternatively, since it's a single character, you can put it in a character class, where it doesn't need to be escaped -- [(]
How to search a string with parentheses using regular expression?
There are 12 characters with special meanings, you escape to its literal meaning with \
in front of it.
re.search(r'Ab\(123\)',string)
# or re.findall(r'Ab\(123\)',string)
Look up https://regex101.com/r/1bb8oz/1 for detail.
Regular expression to match balanced parentheses
Regular expressions are the wrong tool for the job because you are dealing with nested structures, i.e. recursion.
But there is a simple algorithm to do this, which I described in more detail in this answer to a previous question. The gist is to write code which scans through the string keeping a counter of the open parentheses which have not yet been matched by a closing parenthesis. When that counter returns to zero, then you know you've reached the final closing parenthesis.
RegEx to match stuff between parentheses
You need to make your regex pattern 'non-greedy' by adding a ?
after the .+
By default, *
and +
are greedy in that they will match as long a string of chars as possible, ignoring any matches that might occur within the string.
Non-greedy makes the pattern only match the shortest possible match.
See Watch Out for The Greediness! for a better explanation.
Or alternately, change your regex to
\(([^\)]+)\)
which will match any grouping of parentheses that do not, themselves, contain parentheses.
Regex : Find a number between parentheses
This only matches 312312 in the first capture group:
^.*?\([^\d]*(\d+)[^\d]*\).*$
Regexplanation:
^ # Match the start of the line
.*? # Non-greedy match anything
\( # Upto the first opening bracket (escaped)
[^\d]* # Match anything not a digit (zero or more)
(\d+) # Match a digit string (one or more)
[^\d]* # Match anything not a digit (zero or more)
\) # Match closing bracket
.* # Match the rest of the line
$ # Match the end of the line
See it here.
Regular Expression to get a string between parentheses in Javascript
You need to create a set of escaped (with \
) parentheses (that match the parentheses) and a group of regular parentheses that create your capturing group:
var regExp = /\(([^)]+)\)/;var matches = regExp.exec("I expect five hundred dollars ($500).");
//matches[1] contains the value between the parenthesesconsole.log(matches[1]);
Finding Characters Between Parentheses with Regular Expression
Your regex is trying to match as many characters as it can before it stops at a )
character. There are three )
characters in your string, but starting at b
the regex cannot match the third )
because there is a (
between b
and the third )
, and the (
doesn't fit the pattern between the [ ]
brackets. But your regex can (and does) use the second )
to match the )
in its pattern.
Note that on the page you linked to, the answer from which you got this regexp specifically says it will not work when the parentheses are nested inside each other.
You can force the regexp to match the first )
rather than the second if you write the regexp so:
\(([^()]+)\)
Related Topics
Save Google Cloud Speech API Operation(Job) Object to Retrieve Results Later
Sum of All Amount If Charge Dates Are the Same in Stripe
Local Server Error After Upgrading Ruby from 1.8.7 to 1.9.2 (With Rails 3.1.1)
Tilt (Kramdown) Preventing Erb Processing When Rendering Markdown
Ruby: Sorting 2 Arrays Using Values from One of Them
How to Mimic Browser X509 Client Certificate Verification Without Access to Http Layer
How to Require Activerecord in Irb
Routing Error During "Ruby on Rails-Tutorial"
Heroku Deplyoment Asset Precompiling Failed on Rails 6
Rails: How to Pass Custom Params to a Controller Method
Rails 3 Translations Within Models in Production
Understanding Usage of Symbols in Routes.Rb Files
Nomethoderror on Section 5.7 of Rails Guide
Error Occurs When Trying to Install Homebrew on a MAC for Ruby on Rails
How to Turn on SQL Debug Logging for Activerecord in Rspec Tests
Generate Array of All Letters and Digits
Zsh Complains About Rvm _Rvm_Cleanse_Variables: Function Definition File Not Found