PHP regular expression study notes sharing:
1. Create a regular expression
$regex = '/d/i';
It's a bit like the first method in JavaScript, except here the word is a string.
2. Special characters in regular expressions
Special characters include: . * ? [ ^ ] $ ( ) { } = ! < > | : -
3. Functions in regular expressions
There are 8 methods, preg_match and preg_match_all, preg_replace and preg_replace_callback, preg_grep, preg_split, preg_last_error and preg_quote.
preg_match:
Perform a regular expression match
Returns the number of matches of pattern. Its value will be 0 times (no match) or 1 time, because preg_match() will stop searching for after the first match of .
$subject = "dd133aa2"; $pattern = '/\d+/'; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
The above example code adds the parameter "PREG_OFFSET_CAPTURE". In this case, there will be one more offset number in $matches. For example, the following "2"
preg_match_all:
Perform a "global" regular expression match
Returns the complete number of matches (possibly 0), or FALSE if an error occurs.
$subject and $pattern in the code below are the same as above, the only difference is that preg_match is replaced by preg_match_all.
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
The number of times returned is 2, and there are two matches. Look at the input in the $matches array, there are two. One more than the one above.
preg_replace:
Perform a regular expression search and replace
If subject is an array, preg_replace() returns an array, otherwise it returns a string.
If a match is found, the replaced subject is returned, otherwise the unchanged subject is returned. If an error occurs, NULL is returned.
In the code, $subject is an array with two sets of strings. Next, multiple numbers are replaced with uppercase "Z".
$subject = array("dd133aa2", "kk1ff3"); $pattern = '/\d+/'; $result = preg_replace($pattern, 'Z', $subject); print_r($result);
preg_replace_callback:
Performs a regular expression search and replaces using a "callback"
Except that you can specify a callback instead of replacement to calculate the replacement string, the behavior of this function is equivalent to preg_replace() in other aspects, including the returned result.
The following code is also replaced with a capital "Z". The content of each $matches in the callback function is the commented part of the code. The first time is 133 and the second time is 2.
$subject = "dd133aa2"; $pattern = '/\d+/'; $result = preg_replace_callback($pattern, function($matches) { //$matches [0] => 133 //$matches [0] => 2 return 'Z'; }, $subject); print_r($result);
preg_grep:
Returns array entries that match the pattern
Returns an array indexed using the key in the input as .
In the sample code below, I added "ddsdfd" to the $subject array, which does not contain numbers. When doing the matching, I filtered out the ones without numbers.
What $result2 prints is just the opposite. It prints the filtered one, but the key is still 2, not 0.
$subject = array("dd133aa2", "kk1ff3", "ddsdfd"); $pattern = '/\d+/'; $result = preg_grep($pattern, $subject); $result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT); print_r($result); print_r($result2);
preg_split:
通过一个正则表达式分隔字符串
返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。
下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。
$subject = "dd133aa2cc"; $pattern = '/(\d+)/'; $result = preg_split($pattern, $subject); $result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE); print_r($result); print_r($result2);
preg_last_error:
返回最后一个PCRE正则执行产生的错误代码
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar'); $result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出 print_r($result);
preg_quote:
转义正则表达式字符
返回转义后的字符串。
下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。
将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”
$subject = "dd.a?a2cc"; $result = preg_quote($subject); $result2 = preg_quote($subject, 'a'); print_r($result); print_r($result2);
4、模式修正符
以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。