Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个用什么正则表达式?_Php_Regex_String_Preg Match - Fatal编程技术网

Php 这个用什么正则表达式?

Php 这个用什么正则表达式?,php,regex,string,preg-match,Php,Regex,String,Preg Match,我尝试了一个正则表达式,但结果并不是我想要的 这是我的正则表达式: /^(([a-z]{0,})([0-9]+)).*/i 这是我的字符串: 8500A.JPG //I need to get 8500A but I get 8500 0130799.JPG // I get the good result : 0130799 如何在.JPG之前保留字母字符?也许吧 /^(([a-z]{0,})([0-9]+)([a-z]*)).*/i 您到底需要什么?您可以尝试: /^(\w+).*?\

我尝试了一个正则表达式,但结果并不是我想要的

这是我的正则表达式:

/^(([a-z]{0,})([0-9]+)).*/i
这是我的字符串:

8500A.JPG //I need to get 8500A but I get 8500
0130799.JPG // I get the good result : 0130799
如何在.JPG之前保留字母字符?

也许吧

/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i
您到底需要什么?

您可以尝试:

/^(\w+).*?\.\w+$/i

我认为这个简单的regexp是正确的

/^([a-z0-9]+)\.*/i 

看起来您可能对括号感到困惑

在字符类中,可以指定许多范围

/^([0-9A-Za-z]{0,})\.JPG$/
要分解它正在做的事情:

  • ^=线路起点
  • $=行尾
  • (…)=1美元可以在这里买到任何东西
  • [A-Za-z0-9]=匹配A-Z、A-Z和0-9之间的任何内容
  • {0,}=0或更多次
  • =转义,因此使用“文字”
更多信息请点击此处:

希望有帮助

那么:

/^(([a-z]*)([0-9]+.*?))\..*$/i
使用此代码:

$pattern = "/^([0-9]+[a-zA-Z]*).*$/";
preg_match($pattern, "8500A.JPG", $matches);
echo $matches[1];       

preg_match($pattern, "0130799.JPG", $matches);
echo $matches[1];
输出将是:

8500A
0130799

如果您只想从文件名中删除扩展名,为什么不使用

就你而言:

echo pathinfo('8500A.JPG',PATHINFO_FILENAME);
echo pathinfo('0130799.JPG',PATHINFO_FILENAME);
产出:

8500A
0130799

这比使用正则表达式更简单更干净

表达式匹配所有内容,您需要哪个组的
8500A
?可能重复的表达式适用于我,谢谢!我需要清除扩展中的字符串在这种情况下,您不需要正则表达式。只需使用
$pos=strrpos($text,'.');如果($pos!==false)$text=substr($text,0,$pos)
8500A
0130799