有人会帮我用正则表达式来帮助我可靠地识别和删除字符串开头的任何数字,然后是一个点吗?这样从字符串中删除数字前缀 - PHP正则表达式
1. Introduction
成为
Introduction
和
1290394958595. Appendix A
串后成为
Appendix A
有人会帮我用正则表达式来帮助我可靠地识别和删除字符串开头的任何数字,然后是一个点吗?这样从字符串中删除数字前缀 - PHP正则表达式
1. Introduction
成为
Introduction
和
1290394958595. Appendix A
串后成为
Appendix A
尝试:
preg_replace('/^[0-9]+\. +/', '', $string);
其中给出:
php > print_r(preg_replace('/^[0-9]+\. +/', '', '1231241. dfg'));
dfg
东西
点后210$string = "1290394958595. Appendix A";
$first_space_position = strpos(" ", $string);
$stuff_after_space = substr($string, $first_space_position);
东西
$string = "1290394958595. Appendix A";
$first_dot_position = strpos(".", $string);
$stuff_after_dot = substr($string, $first_dot_position);
忘记最后的括号,所以我把它们关闭了。 – 2010-03-07 22:51:40
欢呼声,但这些都会吃掉一切(例如'A.An附录A'),而不仅仅是数值。 – 2010-03-07 22:52:40
在这里你去:
/[0-9]+\./
顺便说一句,我肯定会用正则表达式这里,因为他们都非常可靠,重量轻。
干杯
但3124.第3章可能已损坏.. – 2010-03-07 22:55:01
其实,任何像这样的句子都会被损坏! – Romain 2010-03-07 22:59:02
损坏?你什么意思?它不会 – 2010-03-07 23:06:18
瞧:
^[0-9]+\.
print preg_replace('%^(\d+\.)%', '', '1290394958595. Appendix A');
搜索正则表达式的字符串并用其他内容替换该字符串的PHP函数是preg_replace
。在这种情况下你想要的东西,如:
$mytitle = preg_replace('/^[0-9]+\. */', '', $myline);
它应该是'preg_replace('/^[0-9] + \。* /','',$ myline)'。 – 2010-03-07 22:58:58
\ *脸红* *谢谢 - 现在修复了。 :-) – Tim 2010-03-07 23:09:45
好吧,这不符合识别并删除任何数字,后面跟着一个点,但它会返回所需的字符串,例如附录A,所以它可能有资格作为替代方案。
// remove everything before first space
echo trim(strstr('1290394958595. Appendix A', ' '));
// remove all numbers and dot and space from the left side of string
echo ltrim('1290394958595. Appendix A', '. ');
只是无视它,它不是一个选项。
我知道这个问题是封闭的,只是我的两分钱:
preg_replace("/^[0-9\\.\\s]+/", "", "1234. Appendix A");
将工作最好的,在我看来,主要是因为它也将处理的情况下,如
1.2 This is a level-two heading
@Felix的欢呼,这是非常好的,我没有通过自己的情况。 +1。 – 2010-03-07 23:47:53
如果你认为这个答案比现在接受的答案好,你可以切换它。我并没有试图窃取任何人的雷霆,我只是想着有同样问题的人在这个页面上结束并且没有看到合适的答案。 – Felix 2010-03-08 10:43:54
$str="1290394958595. Appendix A";
$s = explode(" ",$str,2);
if($s[0] + 0 == $s[0]){
print $s[1];
}
请注意'.'表示一个任意字符,而不是句点字符。 – Gumbo 2010-03-07 23:05:48
这个问题有两个错误,在@Romain的答案中不是问题:'[0-9] *'将匹配零数字,这很糟糕 - 使用'+'而不是'*',而' .'是一个特殊的字符,意思是“匹配任何字符”,并且应该用一个反斜杠('\')加以前缀。 – 2010-03-07 23:06:26
这有什么不同? /[0-9]+\./g 除了贪婪和冗长吗? – 2010-03-07 23:07:16