Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
从string-PHP正则表达式中删除数字前缀_Php_Regex - Fatal编程技术网

从string-PHP正则表达式中删除数字前缀

从string-PHP正则表达式中删除数字前缀,php,regex,Php,Regex,有人愿意帮我用正则表达式可靠地识别和删除字符串开头的任何数字,后跟一个点吗?所以 1. Introduction 变成 Introduction Appendix A 及 变成 Introduction Appendix A 串后塞 $string = "1290394958595. Appendix A"; $first_space_position = strpos(" ", $string); $stuff_after_space = substr($string, $first

有人愿意帮我用正则表达式可靠地识别和删除字符串开头的任何数字,后跟一个点吗?所以

1. Introduction
变成

Introduction
Appendix A

变成

Introduction
Appendix A
串后塞

$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);
给你:

/[0-9]+\./
顺便说一句,我肯定会在这里使用正则表达式,因为它们非常可靠且轻量级

干杯

试试:

preg_replace('/^[0-9]+\. +/', '', $string);
其中:

php > print_r(preg_replace('/^[0-9]+\. +/', '', '1231241. dfg'));
dfg

^[0-9]+\.

PHP函数用于搜索字符串中的正则表达式并将其替换为其他内容。在这种情况下,您需要以下内容:

$mytitle = preg_replace('/^[0-9]+\. */', '', $myline);

好的,这不符合识别和删除任何数字(后跟一个点)的条件,但它将返回所需的字符串,例如附录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', '0123456789. ');

别理它,这不是一个选项。

我知道问题已经解决了,只有我的两分钱:

preg_replace("/^[0-9\\.\\s]+/", "", "1234. Appendix A");
在我看来,这将是最有效的,主要是因为它还将处理诸如

1.2 This is a level-two heading

忘记了右括号,所以我为您关闭了它们。干杯,但它们都会吃掉所有东西(例如
A.附录A
),而不仅仅是数值。它应该是
preg\u replace('/^[0-9]+\.*/','.$myline)
*blushes*谢谢-现已修复。:-)事实上,任何像这样的句子都会被破坏!1.腐败?什么意思?在PCRE中没有g改性剂是不可能的。这很公平,但肯定比标记的溶液好。已删除/gNo,但它不是。如前所述,“123.第3章.有意大利面的那一章”将变成“有意大利面的那一章”,这不是预期的效果。请注意,
表示一个任意字符,而不是句号字符。这一章有两个错误,@Romain的回答中没有问题:
[0-9]*
将匹配零位数字,这是错误的-使用
+
而不是
*
,而
是一个特殊字符,表示“匹配任何字符”,应该通过在其前面加反斜杠(``)来转义。这与其他字符有何不同/[0-9]+\./g除了贪婪和冗长之外?@mplacona它以^开头。非常重要。@Felix干杯,这是一个非常好的案例,我没有想到我自己+1、如果你认为这个答案比目前所接受的更好,你可以切换它。我并不是想抢别人的风头,我只是在想,有谁有同样的问题出现在这一页上,却看不到合适的答案。
$str="1290394958595. Appendix A";
$s = explode(" ",$str,2);
if( $s[0] + 0 == $s[0]){
  print $s[1];
}