簡體   English   中英

正則表達式替換“。” 在行的開頭

[英]Regular expression to replace '.' at the start of the line

我試圖用點(。)“ 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);
?>

如果有人能指出正確的方向,我將不勝感激。 謝謝

為什么您的模式不起作用? 您有兩個問題:

[0-9. |0-9.]

方括號是字符類。 他們的意思是“匹配任何字符之一”。 因此,您的正則表達式的這一部分所做的就是匹配單個字符,即數字,點,空格或|。

您似乎正在嘗試創建匹配的組。 在這種情況下,您將需要括號而不是括號。 這樣的事情會做您想要完成的事情:

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

這將匹配一些數字,后跟一個點,並可能跟一個空格。 但是,您可以使事情變得簡單得多:

[0-9]+\. ?

? 使您可以消除長表達式,因為它的意思是“模式可能包含空格”。

不過,您可以走得更遠:

\d+\.\s*

\\d匹配任何數字, \\s匹配任何空格。 *表示您將匹配任意數量的空格,而不是單個空格。

最后,您的模式中也包含以下內容:

(?:\d{0})

我不確定您要執行的操作,但這表示“匹配包含完全為零數字的組”。 這沒有多大意義,也沒有必要。

您的最終模式可以很簡單:

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

最后添加的是開頭的^ 這樣可以確保僅當數字位於行首時才匹配它們。

試試這個模式:

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

試試這個代碼。

$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">

鍵盤

此處不需要任何正則表達式, ltrim會這樣做:

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

在行的開頭加上一個句點的數字是:

^[0-9]+\.

請注意轉義句點,以便它匹配句點而不是任何字符。

為什么不使用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;

您需要使用反斜杠(\\)對點(。)進行轉義,否則點與任何字符都匹配。 因此使用“ \\”。 匹配點和“。” 匹配任何字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM