嘿,伙计们对正则表达式不熟悉。我真的很厌倦真正研究所有的正则表达式charatcer和所有..我需要知道正则表达式中的大于符号的目的是什么。
preg_match('/(?<=<).*?(?=>)/', 'sadfas<email@email.com>', $email);
请告诉我在正则表达式中使用大于symbolo和小于symbol的符号。
任何帮助都将非常感谢.. :)
答案 0 :(得分:10)
大于号只会匹配目标字符串末尾的文字>
。
小于符号并非如此简单。首先让我们回顾一下环视语法:
模式(?<={pattern})
是一个正面的后置断言,它测试当前匹配的字符串是否前面跟一个匹配{pattern}
的字符串。
模式(?={pattern})
是一个积极的先行断言,它测试当前匹配的字符串后面跟着匹配{pattern}
的字符串。
所以打破你的表达
(?<=<)
断言当前匹配的字符串前面有文字<
.*?
匹配任何零次或多次,懒洋洋地(?=>)
断言比当前匹配的字符串后跟文字>
将所有模式放在一起将从您提供的输入字符串中提取email@email.com
。
答案 1 :(得分:2)
您的正则表达式使用外观来捕获<
和>
个字符之间的电子邮件地址。在您的示例输入中,它会捕获email@email.com
。
<强>解释强>
(?<=<) 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