我想在两个字符之间返回字符串,@和点(。)。
我尝试使用正则表达式但无法找到它。
(@(.*?).)
任何人
答案 0 :(得分:32)
你的正则表达式几乎有效,你只是忘了逃避这个时期。此外,在PHP中,您需要分隔符:
'/@(.*?)\./s'
以下是如何在PHP中使用它的完整示例:
$s = 'foo@bar.baz';
$matches = array();
$t = preg_match('/@(.*?)\./s', $s, $matches);
print_r($matches[1]);
输出:
bar
答案 1 :(得分:11)
试试这个正则表达式:
@([^.]*)\.
表达式[^.]*
将匹配除点之外的任何数字。普通的点需要被转义,因为它是一个特殊的角色。
答案 2 :(得分:2)
如果您正在学习正则表达式,您可能也想分析它们:
@\K[^.]++(?=\.)
(?<=@)[^.]++(?=\.)
这两个正则表达式都使用占有量词(++
)。尽可能使用它们,以防止不必要的回溯。此外,通过使用外观构造(或\K
),我们可以匹配@
中.
和$matches[0]
之间的部分。
答案 3 :(得分:2)
这是最好和最快的使用
function get_string_between ($str,$from,$to) {
$string = substr($str, strpos($str, $from) + strlen($from));
if (strstr ($string,$to,TRUE) != FALSE) {
$string = strstr ($string,$to,TRUE);
}
return $string;
}