Php 要替换的正则表达式'';在队伍的开始
我试图用正则表达式将行号替换为点(.)“123.”。比如说这条线是,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. <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的实际问题(更好:我对它的最佳猜测),而不是他们所感知的问题