Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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

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
Php 要替换的正则表达式'';在队伍的开始_Php_Regex - Fatal编程技术网

Php 要替换的正则表达式'';在队伍的开始

Php 要替换的正则表达式'';在队伍的开始,php,regex,Php,Regex,我试图用正则表达式将行号替换为点(.)“123.”。比如说这条线是, 123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 123。 在这里,我想摆脱“123”。这是一行的开始。 目前,我的代码替换了行中任何地方的任何数字和点(.),但我只想去掉行开头的数字和点(.)。 这是我的密码 <?php $pattern = '/[0-9. |0-9.](?:\d{0})/'; $repla

我试图用正则表达式将行号替换为点(.)“123.”。比如说这条线是,

123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
123。
在这里,我想摆脱“123”。这是一行的开始。 目前,我的代码替换了行中任何地方的任何数字和点(.),但我只想去掉行开头的数字和点(.)。 这是我的密码

<?php
$pattern = '/[0-9. |0-9.](?:\d{0})/';
$replacement = ' ';
$try= preg_replace($pattern, $replacement, $line);
echo "\r\n" . html_entity_decode($try);
?>

如果有人能给我指出正确的方向,我将不胜感激。谢谢

试试这个模式:

$pattern = '/^\d+\.\s?/';
尝试以下模式:

$pattern = '/^\d+\.\s?/';

这里不需要任何正则表达式,可以:


这里不需要任何正则表达式,可以:


行首后跟句点的数字为:

^[0-9]+\.

注意:转义句点,使其匹配句点而不是任何字符。

在行首后跟句点的数字为:

^[0-9]+\.
注意转义句点,使其匹配句点而不是任何字符。

为什么不使用

如果您知道您的行以数字开头:

$initial_string = '123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
$desired_string = explode('.', $initial_string, 2)[1];
print $desired_string;
$initial_string='123';
$desired_string=分解('.',$initial_string,2)[1];
打印所需的$u字符串;
编辑:如果不确定行是否以数字开头:

$initial_string = '<html xmlns="http://wwww3org/1999/xhtml" xml:lang="en" lang="en">';
$initial_arr = explode('.', $initial_string, 2);

if (count($initial_arr)>0 && ctype_digit($initial_arr[0])){
    $desired_string = $initial_arr[1];
}else{
    $desired_string = $initial_string;
}
print $desired_string;
$initial_string='';
$initial_arr=分解('.',$initial_字符串,2);
如果(计数($initial\u arr)>0和&ctype\u数字($initial\u arr[0])){
$desired_string=$initial_arr[1];
}否则{
$desired_string=$initial_string;
}
打印所需的$u字符串;
为什么不使用

如果您知道您的行以数字开头:

$initial_string = '123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
$desired_string = explode('.', $initial_string, 2)[1];
print $desired_string;
$initial_string='123';
$desired_string=分解('.',$initial_string,2)[1];
打印所需的$u字符串;
编辑:如果不确定行是否以数字开头:

$initial_string = '<html xmlns="http://wwww3org/1999/xhtml" xml:lang="en" lang="en">';
$initial_arr = explode('.', $initial_string, 2);

if (count($initial_arr)>0 && ctype_digit($initial_arr[0])){
    $desired_string = $initial_arr[1];
}else{
    $desired_string = $initial_string;
}
print $desired_string;
$initial_string='';
$initial_arr=分解('.',$initial_字符串,2);
如果(计数($initial\u arr)>0和&ctype\u数字($initial\u arr[0])){
$desired_string=$initial_arr[1];
}否则{
$desired_string=$initial_string;
}
打印所需的$u字符串;

您需要用反斜杠(\)转义点(.),否则点与任何字符匹配。
因此,使用“\”匹配点,使用“.”匹配任何字符。

您需要用反斜杠(\)转义点(.),否则点匹配任何字符。 所以用“\”匹配一个点,用“.”匹配任何字符。

试试下面的代码

$line = '123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
$pattern = '/^[0-9]+\./';
$replacement = "";
$try= preg_replace($pattern, $replacement, $line);
echo "\r\n" . html_entity_decode($try);
$line='123';
$pattern='/^[0-9]+\./';
$replacement=“”;
$try=preg_replace($pattern,$replacement,$line);
回显“\r\n”。html实体解码($try);
结果

.

请尝试此代码

$line = '123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
$pattern = '/^[0-9]+\./';
$replacement = "";
$try= preg_replace($pattern, $replacement, $line);
echo "\r\n" . html_entity_decode($try);
$line='123';
$pattern='/^[0-9]+\./';
$replacement=“”;
$try=preg_replace($pattern,$replacement,$line);
回显“\r\n”。html实体解码($try);
结果


.

为什么您的模式不起作用?你有两个问题:

[0-9. |0-9.]
方括号是字符类。他们的意思是“匹配任何字符中的一个”。因此,正则表达式的这一部分所做的是匹配单个字符,即数字、点、空格或|

您似乎正在尝试创建匹配的组。在这种情况下,需要括号而不是括号。像这样的事情会实现你想要实现的目标:

([0-9]+\.|[0-9]+\. )
这将匹配一些数字后跟一个点,可能后跟一个空格。但是,您可以简化这一过程:

[0-9]+\. ?
允许您消除长表达式,因为它意味着“模式可能包含空格”

不过,你可以更进一步:

\d+\.\s*
\d
匹配任何数字,
\s
匹配任何空白
*
意味着您将匹配任意数量的空格,而不是单个空格

最后,您的模式中还包含以下内容:

(?:\d{0})
我不知道你想做什么,但上面写着“匹配一个包含零个数字的组”。这没有多大意义,也没有必要

您的最终模式可以是:

'/^\d+\.\s*/'

最后添加的一个是开头的
^
。这样可以确保仅当数字位于行首时才匹配它们。

为什么您的模式不起作用?你有两个问题:

[0-9. |0-9.]
方括号是字符类。他们的意思是“匹配任何字符中的一个”。因此,正则表达式的这一部分所做的是匹配单个字符,即数字、点、空格或|

您似乎正在尝试创建匹配的组。在这种情况下,需要括号而不是括号。像这样的事情会实现你想要实现的目标:

([0-9]+\.|[0-9]+\. )
这将匹配一些数字后跟一个点,可能后跟一个空格。但是,您可以简化这一过程:

[0-9]+\. ?
允许您消除长表达式,因为它意味着“模式可能包含空格”

不过,你可以更进一步:

\d+\.\s*
\d
匹配任何数字,
\s
匹配任何空白
*
意味着您将匹配任意数量的空格,而不是单个空格

最后,您的模式中还包含以下内容:

(?:\d{0})
我不知道你想做什么,但上面写着“匹配一个包含零个数字的组”。这没有多大意义,也没有必要

您的最终模式可以是:

'/^\d+\.\s*/'

最后添加的一个是开头的
^
。这样可以确保只在数字位于行首时才匹配它们。

这也会影响没有数字但有句点或空格的行……或在行号之后以数字继续的行。@Richard:确实如此。但是示例输入看起来不会发生这种情况。在任何情况下,这个答案都试图解决OP的实际问题(更好:我对它的最佳猜测),而不是他们所感知的问题