Php Regex,获取两个字符之间的字符串值

Php Regex,获取两个字符之间的字符串值,php,regex,Php,Regex,我想返回两个字符@和点(.)之间的字符串 我试图使用正则表达式,但无法找到它的工作 (@(.*?).) 有人吗?试试这个正则表达式: @([^.]*)\. 表达式[^.]*将匹配除点以外的任何字符的任何数字。普通点需要转义,因为它是一个特殊字符。您的正则表达式几乎可以工作,您只是忘记了转义句点。此外,在PHP中还需要分隔符: '/@(.*?)\./s' s是最重要的 下面是如何在PHP中使用它的完整示例: $s = 'foo@bar.baz'; $matches = array(); $t

我想返回两个字符@和点(.)之间的字符串

我试图使用正则表达式,但无法找到它的工作

(@(.*?).)

有人吗?

试试这个正则表达式:

@([^.]*)\.

表达式
[^.]*
将匹配除点以外的任何字符的任何数字。普通点需要转义,因为它是一个特殊字符。

您的正则表达式几乎可以工作,您只是忘记了转义句点。此外,在PHP中还需要分隔符:

'/@(.*?)\./s'
s是最重要的

下面是如何在PHP中使用它的完整示例:

$s = 'foo@bar.baz';
$matches = array();
$t = preg_match('/@(.*?)\./s', $s, $matches);
print_r($matches[1]);
输出:

bar

如果您正在学习正则表达式,您可能还需要分析这些:

@\K[^.]++(?=\.)

(?<=@)[^.]++(?=\.)
@\K[^.]++(?=\)

(?这是最好、最快的使用方法


抱歉,我没有注意到他在使用多行字符串。更新了答案。andreas没有说他在使用带换行符的字符串,我只是提到,如果他是,建议的解决方案将不起作用。现在它当然起作用了。啊,是的,我现在明白了。我想知道他是否在尝试解析电子邮件…只是猜测一下。我尝试获取电子邮件地址ess域。@马克·拜尔斯,你的例子用“未知修饰符@”向我射击。当在@get blank page.该死,hate regex:-)之前添加\时,@也是地址第一部分的有效字符,只要它是转义字符或引号,例如firstname@lastname“@example.com-见第6页。您应该考虑使用符合标准的电子邮件解析器,而不是试图自己滚动。这些括号是什么?它们是你的分隔符吗?这可能是个问题。如果有多个@字符或多个点,该怎么办?[无关]在正则表达式的主题上,我想提醒大家这个有趣的答案:
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;

}