I am new to regular expressions, and I am just tired by really studying all of the regex charatcer and all. I need to know what is the purpose of greater than symbol in regex for eg:
preg_match('/(?<=<).*?(?=>)/', 'sadfas<[email protected]>', $email);
Please tell me the use of greater than symbo and less than symbol in regex.
$ means "Match the end of the string" (the position after the last character in the string).
To match a character having special meaning in regex, you need to use a escape sequence prefix with a backslash ( \ ). E.g., \. matches "." ; regex \+ matches "+" ; and regex \( matches "(" . You also need to use regex \\ to match "\" (back-slash).
Inside a character class, the + char is treated as a literal char, in every regex flavor. [+] always matches a single + literal char. E.g. in c#, Regex. Replace("1+2=3", @"[+]", "-") will result in 1-2=3 .
*? is non-greedy. * will match nothing, but then will try to match extra characters until it matches 1 , eventually matching 101 . All quantifiers have a non-greedy mode: .
The greater than symbol simply matches the literal >
at the end of your target string.
The less than symbol is not so simple. First let's review the lookaround syntax:
The pattern (?<={pattern})
is a positive lookbehind assertion, it tests whether the currently matched string is preceded by a string matching {pattern}
.
The pattern (?={pattern})
is a positive lookahead assertion, it tests whether the currently matched string is followed by a string matching {pattern}
.
So breaking down your expression
(?<=<)
assert that the currently matched string is preceded by a literal <
.*?
match anything zero or more times, lazily(?=>)
assert than the currently matched string is followed by a literal >
Putting it all together the pattern will extract [email protected]
from the input string you have given it.
Your regex is using lookarounds to capture email address between <
and >
characters. In your example input it captures [email protected]
.
Explanation:
(?<=<) Positive Lookbehind - Assert that the regex below can be matched
< matches the character < literally
.*? matches any character (except newline)
Quantifier: Between zero and unlimited times, as few times as possible,
expanding as needed [lazy]
(?=>) Positive Lookahead - Assert that the regex below can be matched
> matches the character > literally
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With