Regex, get string value between two characters

前端 未结 4 1693
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-03 07:31

I\'d like to return string between two characters, @ and dot (.).

I tried to use regex but cannot find it working.

(@(.*?).)

Anybod

相关标签:
4条回答
  • 2020-12-03 08:01

    this is the best and fast to use

    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;
    
    }
    
    0 讨论(0)
  • 2020-12-03 08:06

    Your regular expression almost works, you just forgot to escape the period. Also, in PHP you need delimiters:

    '/@(.*?)\./s'
    

    The s is the DOTALL modifier.

    Here's a complete example of how you could use it in PHP:

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

    Output:

    bar
    
    0 讨论(0)
  • 2020-12-03 08:10

    Try this regular expression:

    @([^.]*)\.
    

    The expression [^.]* will match any number of any character other than the dot. And the plain dot needs to be escaped as it’s a special character.

    0 讨论(0)
  • 2020-12-03 08:12

    If you're learning regex, you may want to analyse those too:

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

    Both these regular expressions use possessive quantifiers (++). Use them whenever you can, to prevent needless backtracking. Also, by using lookaround constructions (or \K), we can match the part between the @ and the . in $matches[0].

    0 讨论(0)
提交回复
热议问题