正则表达式替换'。'在线的开头

时间:2013-01-30 11:49:57

标签: php regex

我正在尝试用点(。)“123”替换行号。使用正则表达式。例如,行是,

123. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

我想在这里摆脱“123”。这是在行的开始。 目前代码我已经在行中的任何地方替换任何数字和点(。),但我想摆脱数字和点(。)仅在行的开头。 这是我的代码,

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

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

7 个答案:

答案 0 :(得分:2)

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

[0-9. |0-9.]

括号是一个角色类。他们的意思是“匹配任何一个角色”。那么你的正则表达式的这一部分是匹配单个字符,即数字,点,空格或|。

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

([0-9]+\.|[0-9]+\. )

这将匹配一些数字后跟一个点,并可能后跟一个空格。但是,你可以做得更简单:

[0-9]+\. ?

?使您可以消除长表达式,因为它意味着“可能模式包含空格”。

你可以走得更远,但是:

\d+\.\s*

\d匹配任何数字,\s匹配任何空格。 *表示您将匹配任意数量的空格,而不是单个空格。

最后,你的模式中也有这个:

(?:\d{0})

我不确定你要做什么,但这说“匹配一个包含完全零位数的组”。它没有多大意义,也没有必要。

您的最终模式可以是:

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

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

答案 1 :(得分:1)

尝试这种模式:

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

答案 2 :(得分:1)

试试这段代码..

$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);

<强>结果
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Codepad

答案 3 :(得分:0)

这里不需要任何正则表达式,ltrim会这样做:

$line = ltrim($line, "0123456789. ");

答案 4 :(得分:0)

数字后跟一行开头的句号将是:

^[0-9]+\.

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

答案 5 :(得分:0)

为什么不使用explode

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

$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 = '<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;

答案 6 :(得分:0)

你需要用反斜杠(\)来转义点(。),否则点匹配任何字符。 所以使用&#34; \。&#34;匹配一个点和&#34;。&#34;匹配任何角色。