代码之家  ›  专栏  ›  技术社区  ›  Marshall Thompson

正则表达式:如何匹配字符串中的最后一个点

  •  13
  • Marshall Thompson  · 技术社区  · 14 年前

    我有两个文件名字符串示例:

    jquery.ui.min.js
    jquery.ui.min.css
    

    再多说一点我在做什么。我使用PHP的preg\u split()函数将文件名拆分为一个数组。该函数删除所有匹配项,并为您提供一个包含拆分之间的元素的数组。我试图让它将jquery.ui.min.js拆分成如下数组:

    array[0] = jquery.ui.min
    array[1] = js
    
    6 回复  |  直到 14 年前
        1
  •  13
  •   deceze    14 年前

    我想你很难使用 preg_split , preg_match 应该是更好的选择。

    preg_match('/(.*)\.([^.]*)$/', $filename, $matches);
    

    或者,看看 pathinfo .

    $filename = substr($file, 0, strrpos($file, '.'));
    $extension = substr($file, strrpos($file, '.') + 1);
    
        2
  •  16
  •   paxdiablo    14 年前

    如果要提取字符串的最后一部分,则需要:

    \.([^.]*)$
    

    如果你不想 .

    (\.[^.]*)$
    

    如果你愿意。

        3
  •  4
  •   CrayonViolent    14 年前

    方案1:

    $ext = "jquery.ui.min.css";
    $ext = array_pop(explode('.',$ext));
    echo $ext;
    

    方案2:

    $ext = "jquery.ui.min.css";
    $ext = pathinfo($ext);
    echo $ext['extension'];
    
        4
  •  2
  •   Brandon Horsley    14 年前
    \.[^.]*$
    
        5
  •  1
  •   Jaans    10 年前

    这是我需要做的 当只匹配最后一个“零件”时:

    [^\.]([^.]*)$
    
        6
  •  0
  •   Alan Moore Chris Ballance    12 年前

    我用过这个-试试看:

    m/\.([^.\\]+)$/