Regex: Difference between revisions

 
(17 intermediate revisions by the same user not shown)
Line 6:
== Metacharacters ==
 
{| class="wikitable" style="width:80%"
|-
!colspan=2| Metacharacters DefinedDefinitions !!colspan=2| Metacharacter Examples
|-
! MChar !! Definition !! style="width:15%"|Pattern !!style="width:25%"| Sample Matches
|-
| ^ || Start of a string. || ^abc || abc, abcdefg, abc123, ...
Line 30:
| + || 1 or more of previous expression. || ab+c || abc, abbc, abbbc, ...
|-
| ? || 0 or 1 of previous expression; also forces minimal matching when an expression might <br />match several strings within a search string. || ab?c || ac, abc
|-
| \ || Preceding one of the above, it makes it a literal instead of a special character. <br />Preceding a special matching character, see below. || a\sc || a c
|}
 
Line 58:
| \e || Matches an escape \u001B.
|-
| \040 || Matches an ASCII character as octal (up to three digits); numbers with no leading zero are backreferences if they have <br />only one digit or if they correspond to a capturing group number. (For more information, see Backreferences.) For example, the character \040 represents a space.
|-
| \x20 || Matches an ASCII character using hexadecimal representation (exactly two digits).
Line 66:
| \u0020 || Matches a Unicode character using a hexadecimal representation (exactly four digits).
|-
| \* || When followed by a character that is not recognized as an escaped character, matches that character. <br />For example, \* is the same as \x2A.
|}
 
== Character Classes ==
Char Class || Description
. Matches any character except \n. If modified by the Singleline option, a period character matches any character. For more information, see Regular Expression Options.
[aeiou] Matches any single character included in the specified set of characters.
[^aeiou] Matches any single character not in the specified set of characters.
[0-9a-fA-F] Use of a hyphen (–) allows specification of contiguous character ranges.
\p{name} Matches any character in the named character class specified by {name}. Supported names are Unicode groups and block ranges. For example, Ll, Nd, Z, IsGreek, IsBoxDrawing.
\P{name} Matches text not included in groups and block ranges specified in {name}.
\w Matches any word character. Equivalent to the Unicode character categories [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \w is equivalent to [a-zA-Z_0-9].
\W Matches any nonword character. Equivalent to the Unicode categories [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \W is equivalent to [^a-zA-Z_0-9].
\s Matches any white-space character. Equivalent to the Unicode character categories [\f\n\r\t\v\x85\p{Z}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \s is equivalent to [ \f\n\r\t\v].
\S Matches any non-white-space character. Equivalent to the Unicode character categories [^\f\n\r\t\v\x85\p{Z}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \S is equivalent to [^ \f\n\r\t\v].
\d Matches any decimal digit. Equivalent to \p{Nd} for Unicode and [0-9] for non-Unicode, ECMAScript behavior.
\D Matches any nondigit. Equivalent to \P{Nd} for Unicode and [^0-9] for non-Unicode, ECMAScript behavior.
 
{| class="wikitable"
|-
!Char Class ||!! Description
|-
| . || Matches any character except \n. If modified by the Singleline option, a period character matches any character. For more information, see Regular Expression Options.
|-
| [aeiou] || Matches any single character included in the specified set of characters.
|-
| [^aeiou] || Matches any single character not in the specified set of characters.
|-
| [0-9a-fA-F] || Use of a hyphen (–) allows specification of contiguous character ranges.
|-
| \p{name} || Matches any character in the named character class specified by {name}. <br />Supported names are Unicode groups and block ranges. For example, Ll, Nd, Z, IsGreek, IsBoxDrawing.
|-
| \P{name} || Matches text not included in groups and block ranges specified in {name}.
|-
| \w || Matches any word character. Equivalent to the Unicode character categories [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. <br />If ECMAScript-compliant behavior is specified with the ECMAScript option, \w is equivalent to [a-zA-Z_0-9].
|-
| \W || Matches any nonword character. Equivalent to the Unicode categories [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. <br />If ECMAScript-compliant behavior is specified with the ECMAScript option, \W is equivalent to [^a-zA-Z_0-9].
|-
| \s || Matches any white-space character. Equivalent to the Unicode character categories [\f\n\r\t\v\x85\p{Z}]. <br />If ECMAScript-compliant behavior is specified with the ECMAScript option, \s is equivalent to [ \f\n\r\t\v].
|-
| \S || Matches any non-white-space character. Equivalent to the Unicode character categories [^\f\n\r\t\v\x85\p{Z}]. <br />If ECMAScript-compliant behavior is specified with the ECMAScript option, \S is equivalent to [^ \f\n\r\t\v].
|-
| \d || Matches any decimal digit. Equivalent to \p{Nd} for Unicode and [0-9] for non-Unicode, ECMAScript behavior.
|-
| \D || Matches any nondigit. Equivalent to \P{Nd} for Unicode and [^0-9] for non-Unicode, ECMAScript behavior.
|}
 
== More Examples ==
 
{| class="wikitable"
|-
!style="width:25%"| Symbol !!style="width:65%"| Function
|-
| <nowiki>[\^$.|?*+()</nowiki> || Special characters any other will match themselves
Line 113 ⟶ 129:
 
=Examples=
==Samples==
*For IP Addresses:
 
1. To Match upto 999.999.999.999:
*;Matching specific value from output
Source: [https://pythex.org pythex.org]:
%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, '''99.3 id''', 0.2 wa, 0.0 hi, 0.0 si, 0.1 st
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,'''100.0 id''', 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,'''1.0 id''', 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Regex:
([0-9]{3}.[0-9]|[0-9]{2}.[0-9]|[0-9].[0-9])(?=\sid)
Explanation:
[0-9]{3} => 3 digits
| => OR
[0-9]{2} => 2 digits
. => any character (Dot here)
(?=\sid) => select non-greedy output before 'id'
? => non-greedy
\s => Space
id => 'id' character
 
*For ==IP Addresses:==
 
1.* To Match upto 999.999.999.999:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
OR shortened with a quantifier to:
\b(?:\d{1,3}\.){3}\d{1,3}\b
2.* To match exactly upto 255.255.255.255:
<pre style="width: 97%; overflow-x: scroll;">
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
Line 125 ⟶ 161:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
 
* For ==Credit Card numbers:==
1. Visa card numbers start with a 4. New cards have 16 digits. Old cards have 13:
^4[0-9]{12}(?:[0-9]{3})?$
2. MasterCard numbers start with the numbers 51 through 55. All have 16 digits:
^5[1-5][0-9]{14}$
 
== Misc Examples ==
 
* Match 2 characters/numbers only:
^[0-9a-zA-Z]{2}$
 
* Simple URL Verification:
(http|https):\/\/([a-z])\w+\.(com|net|org)
 
<br/>