The Stack Overflow Regular Expressions FAQ
---
Table of contents
Stack Overflow questions and answers:
- [Quantifiers](URL): Greedy, possessive, reluctant, `*`:0-or-more, `+`:1-or-more, `{min,max}`
- [Character Classes](URL)
- [Special Characters, Anchors, Other](URL)
- [Groups](URL)
- [Lookarounds](URL)
- [Modifiers](URL)
- [Common Validation Tasks and Advanced Regex-Fu](URL)
External links:
- [Flavor-Specific Information](URL)
- [General information](URL)
- [Tools: Testers and Explainers](URL): Websites and applications
---
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Quantifiers
- Zero-or-more: [`*`:greedy](http://stackoverflow.com/a/10764399), [`*?`:reluctant](http://stackoverflow.com/a/10764399), [`*+`:possessive](http://stackoverflow.com/a/17064242)
- One-or-more: [`+`:greedy](http://stackoverflow.com/a/10764399), [`+?`:reluctant](http://stackoverflow.com/a/10764399), [`++`:possessive](http://stackoverflow.com/q/4489551)
- [`?`:optional (zero-or-one)](http://stackoverflow.com/a/17400486)
- Min/max ranges (all inclusive): [`{n,m}`:between n & m](http://stackoverflow.com/a/17032985), [`{n,}`:n-or-more](http://stackoverflow.com/a/17120435), [`{n}`:exactly n](http://stackoverflow.com/a/17829727)
- More on the differences between greedy, possessive, and reluctant:
- (Greedy vs non-greedy, non-greedy also known as "lazy", "ungreedy" or "reluctant")
- [Greedy vs. Reluctant vs. Possessive Quantifiers](http://stackoverflow.com/q/5319840)
- [In-depth discussion on the differences between greedy versus non-greedy](http://stackoverflow.com/a/3075532)
- [What's the difference between `{n}` and `{n}?`](http://stackoverflow.com/q/18006093)
- [Can someone explain Possessive Quantifiers to me?](http://stackoverflow.com/q/1117467) [tag:php], [tag:perl], [tag:java], [tag:ruby]
- [Emulating possessive quantifiers](http://stackoverflow.com/q/5537513) [tag:.net]
- Non-stackoverflow references: From [Sun](http://docs.oracle.com/javase/tutorial/essential/regex/quant.html), [regular-expressions.info](http://www.regular-expressions.info/possessive.html)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Character Classes
- [`[...]`](http://stackoverflow.com/a/1553171):any one character, [`[^...]`](http://stackoverflow.com/a/20802463):negated/any character but
- [`[...-...]` / `[range-[bar]]`](http://stackoverflow.com/a/10738860):any one character in range [tag:java], [tag:ruby] 1.9+
- [`[range&&[bar]]`:intersection](http://stackoverflow.com/a/15935168) [tag:java], [tag:ruby] 1.9+
- [`[[:alpha:]]`](http://stackoverflow.com/a/12276342):POSIX character classes
- [Why do `[^\\D2]`, `[^[^0-9]2]`, `[^2[^0-9]]` get different results in Java?](http://stackoverflow.com/q/21934168) [tag:java]
- Short-Hand:
- Digit: [`\d`:digit](http://stackoverflow.com/a/16621778), [`\D`:non-digit](http://stackoverflow.com/a/19011185)
- Word character (Letter, digit, underscore): [`\w`:word character](http://stackoverflow.com/a/11874899), [`\W`:non-word character](http://stackoverflow.com/a/19011185)
- Whitespace: [`\s`:whitespace](http://stackoverflow.com/a/21067350), [`\S`:non-whitespace](http://stackoverflow.com/a/19011185)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Special Characters, Anchors, Other
Special characters:
- Horizontal whitespace: [`\h`:space-or-tab](http://stackoverflow.com/a/4910093), [`\t`:tab](http://stackoverflow.com/a/17950891)
- Newlines:
- [`\r`, `\n`:carriage return and line feed](http://stackoverflow.com/a/3451192)
- [`\R`:generic newline](http://stackoverflow.com/a/18992691) [tag:php]
- Other: [`\v`:vertical tab](http://stackoverflow.com/q/12290224), [`\e`:the escape character](http://stackoverflow.com/a/4275788)
Anchors:
- *(Also see "Flavor-Specific Information > Java > The functions in `Matcher`")*
- [`^`:start of line/input](http://stackoverflow.com/a/22759143/578411), [`\b`:word boundary, and `\B`:non-word boundary](http://stackoverflow.com/a/6664167), [`$`:end of line/input](http://stackoverflow.com/a/22759143/578411)
- [`\A`:start of input, `\Z`:end of input](http://stackoverflow.com/a/4020821) [tag:php], [tag:perl], [tag:python], [tag:ruby]
- [`\G`:start of match](http://stackoverflow.com/q/21971701) [tag:php], [tag:perl], [tag:ruby]
Other:
- [`|`:or operator](http://stackoverflow.com/a/22187948)
- [`.`:any character](http://stackoverflow.com/a/13594017), [`[.]`:literal dot character](http://stackoverflow.com/a/21929764)
- [What special characters must be escaped?](http://stackoverflow.com/q/399078)
- Control verbs ([tag:php] and [tag:perl]): [`(*PRUNE)`](http://stackoverflow.com/a/20008790), [`(*SKIP)`](http://stackoverflow.com/a/20008790), [`(*FAIL)` and `(*F)`](http://stackoverflow.com/a/20008790)
- [tag:php] only: [`(*BSR_ANYCRLF)`](http://stackoverflow.com/a/7374702)
- Recursion ([tag:php] and [tag:perl]): [`(?R)`](http://stackoverflow.com/q/8440911), [`(?0)` and `(?1)`](http://stackoverflow.com/a/20569361), [`(?-1)`](http://stackoverflow.com/a/17845034), [`(?&groupname)`](http://stackoverflow.com/a/18151617)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Groups
- [`(...)`:capture group](http://stackoverflow.com/q/21880127), [`(?:)`:non-capture group](http://stackoverflow.com/q/3512471)
- [`\1`:backreference and capture-group reference, `$1`:capture group reference](http://stackoverflow.com/q/21880127)
- [`\g<1>123`:How to follow a numbered capture group, such as `\1`, with a number?:](http://stackoverflow.com/q/5984633) [tag:python]
- [What does a subpattern `(?i:regex)` mean?](http://stackoverflow.com/a/3812728)
- [`(?>)`:atomic group](http://stackoverflow.com/q/14411818), [`(?|)`:branch reset](http://stackoverflow.com/a/5333645)
- [Equivalent of branch reset in .NET/C#](http://stackoverflow.com/a/5378077) [tag:.net]
- Named capture groups:
- [tag:java]: `(?regex)`: [Overview](https://blogs.oracle.com/xuemingshen/entry/named_capturing_group_in_jdk7) and [naming rules](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#groupname) *(Non stackoverflow links)*
- Other languages: [`(?Pregex)`](http://stackoverflow.com/q/10059673) [tag:python], [`(?regex)`](http://stackoverflow.com/a/20355718/578411) [tag:.net], [`(?regex)`](http://stackoverflow.com/a/288989) [tag:perl], `(?Pregex)` and `(?regex)` [tag:php]
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Lookarounds
- Lookaheads: [`(?=...)`:positive](http://stackoverflow.com/a/1570916), [`(?!...)`:negative](http://stackoverflow.com/a/12210820)
- Lookbehinds: [`(?<=...)`:positive](http://stackoverflow.com/a/11197672), [`(?External link, someone got one from SO?
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Modifiers
- [What does the `c` modifier mean?](http://stackoverflow.com/a/11395687) [tag:perl]
- [What does the `e` modifier mean?](http://stackoverflow.com/a/2468483) [tag:php]
- [How to convert preg_replace e to preg_replace_callback?](http://stackoverflow.com/q/16367404)
- [What does the `g` modifier mean?](http://stackoverflow.com/a/9622110)
- [What does the `i` modifier mean?](http://stackoverflow.com/a/12411066)
- [What does the `m` modifier mean?](http://stackoverflow.com/a/22438123) [tag:php] [tag:perl] [tag:python] [tag:javascript] [tag:.net] [tag:java]
- [What does the `m` modifier mean in Ruby?](http://stackoverflow.com/a/4257912) [tag:ruby]
- [What does the `o` modifier mean?](http://stackoverflow.com/a/13334823) [tag:ruby]
- [What does the `s` modifier mean?](http://stackoverflow.com/a/13594017) (not supported by [tag:javascript], [tag:ruby])
- [A workaround for JavaScript](http://stackoverflow.com/a/1068308)
- [What does the `S` modifier mean?](http://stackoverflow.com/a/210027) [tag:php]
- [What does the `u` modifier mean?](http://stackoverflow.com/a/2553239)
- [What does the `U` modifier mean?](http://stackoverflow.com/a/5978385)
- [What does the `x` modifier mean?](http://stackoverflow.com/a/2710390)
- [What are inline modifiers?](http://stackoverflow.com/a/43636)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Common Validation Tasks and Advanced Regex-Fu
Common Validation Tasks:
- Internet: [email addresses](http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address), [urls](http://stackoverflow.com/a/190405/2736496) ([host/port](http://stackoverflow.com/a/22697740/578411)), [passwords](http://stackoverflow.com/a/3802238/2736496)
- Numeric: [a number](http://stackoverflow.com/a/4247184/578411), [numeric min-max ranges (such as 1-31)](http://stackoverflow.com/a/22131040/2736496), [phone numbers](http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation), [date](http://stackoverflow.com/questions/15491894/regex-to-validate-date-format-dd-mm-yyyy)
- *Also see "When to *not* use regular expressions", under "General Information"
Advanced Regex-Fu:
- Strings and numbers:
- [match a string not containing a word](http://stackoverflow.com/q/406230)
- [How does this PCRE pattern detect palindromes?](http://stackoverflow.com/q/3746487)
- [Match strings whose length is a fourth power](http://codegolf.stackexchange.com/q/19262)
- [Get a string between two curly braces: `{...}`](http://stackoverflow.com/questions/413071/regex-to-get-string-between-curly-braces-i-want-whats-between-the-curly-brace)
- [How does this regex find triangular numbers?](http://stackoverflow.com/q/3627681)
- [How to determine if a number is a prime with regex?](http://stackoverflow.com/q/2795065)
- Other:
- [How can we match a^n b^n with Java regex?](http://stackoverflow.com/q/3644266)
- Match nested brackets
- [Using a recursive pattern](http://stackoverflow.com/a/17845034) [tag:php], [tag:perl]
- [Using balancing groups](http://stackoverflow.com/a/17004406) [tag:.net]
- [“vertical” regex matching in an ASCII “image”](http://stackoverflow.com/q/17039670)
- [Verbs that act after backtracking and failure](http://stackoverflow.com/q/19992984)
- [The most up-voted regex questions on Code Golf](http://codegolf.stackexchange.com/questions/tagged/regular-expression?sort=votes&pageSize=50)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Flavor-Specific Information
Java:
- Official docs: [Pattern JavaDoc](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html), [Sun's Regular expressions tutorial](http://docs.oracle.com/javase/tutorial/essential/regex/index.html)
- The differences between functions in [`java.util.regex.Matcher`](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html):
- [`matches()`](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#matches()): The match must be anchored to both input-start and -end
- [`find()`](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#find()): A match may be anywhere in the input string (substrings)
- [`lookingAt()`](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html): The match must be anchored to input-start only
- *(For anchors in general, see the section "Anchors")*
- The only [`java.lang.String`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html) functions that accept regular expressions: [`matches(s)`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches%28java.lang.String%29), [`replaceAll(s,s)`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29), [`replaceFirst(s,s)`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceFirst%28java.lang.String,%20java.lang.String%29), [`split(s)`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29), [`split(s,i)`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String,%20int%29)
- *[An (opinionated and) detailed discussion of the disadvantages of and missing features in `java.util.regex`](http://stackoverflow.com/a/5771326/2736496)
*Non-stackoverflow links, except for those marked with `*`*
Official documentation:
- JavaScript 1.5 [general info](https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Regular_Expressions) and [RegExp object](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp)
- [.NET](http://msdn.microsoft.com/en-us/library/hs600312(v=vs.110).aspx)
- Databases: [Oracle](http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm), [MySQL](https://dev.mysql.com/doc/refman/5.1/en/regexp.html)
- [Perl5 version 18.2](http://perldoc.perl.org/perlre.html)
- Splunk: [regex terminology and syntax](http://docs.splunk.com/Documentation/Splunk/6.0.2/Knowledge/AboutSplunkregularexpressions#Terminology_and_syntax) and [regex command](http://docs.splunk.com/Documentation/Splunk/6.0.2/SearchReference/Regex)
- Tcl: [manpage](http://www.tcl.tk/man/tcl8.4/TclCmd/regexp.htm), [`regexp` command](http://wiki.tcl.tk/986)
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
General information
- Other general documentation resources: *[Learning Regular Expressions](http://stackoverflow.com/questions/4736/learning-regular-expressions), [Regular-expressions.info](http://www.regular-expressions.info), [Wikipedia entry](http://en.wikipedia.org/wiki/Regular_expression), [Open-Directory Project](http://www.dmoz.org/Computers/Programming/Languages/Regular_Expressions), [Rex Egg](http://www.rexegg.com/)
- *[DFA versus NFA](http://stackoverflow.com/questions/3978438/dfa-vs-nfa-engines-what-is-the-difference-in-their-capabilities-and-limitations)
- Books: Jeffrey Friedl's [Mastering Regular Expressions](http://regex.info/book.html)
- When to *not* use regular expressions:
- [Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.](http://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/) *(blog written by stackoverflow's founder)*
- *[Do not use regular expressions to parse HTML](http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not). *[*It's for your own safety!*](http://stackoverflow.com/a/1732454/2736496))
*Non-stackoverflow links, except for those marked with `*`*
[`<-BACK`](http://stackoverflow.com/a/22944075/2736496)
to table of contents
The Stack Overflow Regular Expressions FAQ
---
Tools: Testers and Explainers
Online (*=Also has a replacement tester):
- [Debuggex](http://debuggex.com) [tag:javascript], [tag:python], [tag:pcre]
- *[Regular Expressions 101](http://regex101.com) [tag:php] PCRE, [tag:python], [tag:javascript]
- [Regex Pal](http://regexpal.com/), *[regular-expressions.info](http://www.regular-expressions.info/javascriptexample.html) [tag:javascript]
- [Rublar](http://rubular.com/) [tag:ruby]
- [RegExr](http://www.regexr.com/)
- *RegexPlanet: [Java](http://www.regexplanet.com/advanced/java/index.html) [tag:java], [Go](http://www.regexplanet.com/advanced/golang/index.html) [tag:go], [Haskell](http://www.regexplanet.com/advanced/haskell/index.html) [tag:haskell], [JavaScript](http://www.regexplanet.com/advanced/javascript/index.html) [tag:javascript], [.NET](http://www.regexplanet.com/advanced/dotnet/index.html) [tag:dotnet], [Perl](http://www.regexplanet.com/advanced/perl/index.html) [tag:perl], [PHP PCRE](http://www.regexplanet.com/advanced/php/index.html) [tag:php], [Python](http://www.regexplanet.com/advanced/python/index.html) [tag:python], [Ruby](http://www.regexplanet.com/advanced/ruby/index.html) [tag:ruby], [XRegExp](http://www.regexplanet.com/advanced/xregexp/index.html) [tag:xregexp]
- [`freeformatter.com`](http://www.freeformatter.com/regex-tester.html) [tag:xregexp]
- *[`regex.larsolavtorvik.com`](http://regex.larsolavtorvik.com/) [tag:php] PCRE and POSIX, [tag:javascript]
- [Regex Hero](http://regexhero.net/tester) [tag:dotnet]
Offline
- Microsoft Windows: [RegexBuddy](http://regexbuddy.com) (analysis), [RegexMagic](http://regexmagic.com) (creation)
*(This section contains non-stackoverflow links)*