我有一个字符串“Mod.816-10 025”,我想删除除了816-10之外的所有内容。
条件:
有人能帮助我吗?我尝试了5种不同的正则表达式但没有成功。
答案 0 :(得分:1)
$text = "Mod. 816-10 025";
echo preg_replace('~.+ (\d+-\d+) .+~', '\1', $text);
// prints: 816-10
答案 1 :(得分:1)
<?php
# ...
$pattern = '/\d+-\d+/';
$matches = array();
preg_match($pattern, $input, $matches);
现在$matches[0]
会有NUM-NUM个字符串。如果你想限制数字的大小(如果它一直在2到3位之间,那么模式可能类似于/\d{2,3}-\d{2,3}/
答案 2 :(得分:1)
如果条件始终存在,则不需要RegEx:
$string = explode(" ","Mod. 816-10 025");
$number = $string[1];
注意:使用php本机函数通常比强大的RegEx更快。
答案 3 :(得分:0)
$foo = "Mod. 816-10 025";
$bar = explode(" ", $foo);
$result = $bar[1];
所有这些答案都是正确的,这只是你究竟在寻找什么的问题。
答案 4 :(得分:0)
人们发布了关于preg_replace答案的帖子,但是除了空格外,他们都没有处理任何空白。如果您更喜欢preg_replace()
到preg_match()
,我宁愿使用
preg_replace('/.*\s+(\d+-\d+)\s+.*/', '$1', $input);