我在文本檔案中有大約 200 行
值可以像
$array = ['.1','1.5','0.10','.8'....];
我正在尋找替換 .number 的特定正則運算式模式,例如 '.1' 或 '.8'
preg_replace('/\.(\d )/','0${0}',$array[0]);
它正在作業,但就價值而言1.5,它的輸出是10.5錯誤的。
uj5u.com熱心網友回復:
如果您的所有值都是浮點或整數運算式,那么您可以直接使用“字串開頭后跟文字點”:(演示)
$array = ['.1', '1.5', '0.10', '.8'];
var_export(preg_replace('/^\./', '0.', $array));
如果您需要確保字串開頭的點后跟一個數字,您可以添加一個前瞻:(Demo)
var_export(preg_replace('/^\.(?=\d)/', '0.', $array));
無論哪種方式,您都不需要利用任何捕獲組或反向參考。
知道它preg_replace()會愉快地自行迭代您的陣列可能對您很有用——不需要撰寫額外的回圈。
如果您想直接操作您的 txt 檔案,只需添加一個m模式修飾符,這^意味著每行的開頭。(演示)
$txt = <<<TEXT
.1
1.5
0.10
.8
TEXT;
echo preg_replace('/^\.(?=\d)/m', '0.', $txt);
輸出:
0.1
1.5
0.10
0.8
uj5u.com熱心網友回復:
使用將在和匹配\.(\d )中獲得部分匹配1.5.5
然后替換將是未觸及的1加0號,.5導致10.5
您可以替換以點開頭的值,并匹配后面的單個數字 ^\.\d
如果它應該是該行中的唯一值,您也可以在字串末尾附加一個錨點 ^\.\d $
$array = ['.1','1.5','0.10','.8'];
foreach($array as $a) {
echo preg_replace('/^\.\d/','0$0', $a). PHP_EOL;
}
輸出
0.1
1.5
0.10
0.8
查看PHP 演示
uj5u.com熱心網友回復:
如果您有一組與您提供的值相似的值,則無需正則運算式即可解決此問題。使用floatval很容易,例如floatval('.8')將 return 0.8。一個一般的例子如下:
$input = ['.1','1.5','0.10','.8'];
$output = array_map('floatval', $input);
print_r($output); // => Array ( [0] => 0.1 [1] => 1.5 [2] => 0.1 [3] => 0.8 )
或者,如果您需要嚴格使用字串:
$input = ['.1','1.5','0.10','.8'];
$output = array_map(function($item) {
return strval(floatval($item));
}, $input);
print_r($output); // => Array ( [0] => 0.1 [1] => 1.5 [2] => 0.1 [3] => 0.8 )
或者支持箭頭函式的簡短版本(PHP >= 7.4):
$input = ['.1','1.5','0.10','.8'];
$output = array_map(fn($item) => strval(floatval($item)), $input);
print_r($output); // => Array ( [0] => 0.1 [1] => 1.5 [2] => 0.1 [3] => 0.8 )
如果您需要在文本中標準化這些值,那么您可以使用preg_replace_callback floatval
$input = "Test text: .1 1.5 = 1.6 and 000.10 - .8 = .2";
$output = preg_replace_callback("|\d*\.\d |", fn($item) => floatval($item[0]), $input);
print_r($output); // => "Test text: 0.1 1.5 = 1.6 and 0.1 - 0.8 = 0.2"
uj5u.com熱心網友回復:
您沒有在.char 之前檢查背景關系。
您可以檢查 數字'之前是否存在字符:.
preg_replace("/'\K\.\d /",'0$0',$array[0]);
請參閱正則運算式演示。詳情:
'- 一個'字符\K- 忘記'匹配的字符\.- 一個.字符\d- 一位或多位數字
該0$0模式用0 替換整個匹配值。請注意,僅當反向參考后跟一個字面數字時才需要明確的${0}反向參考形式,而不是在它之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418915.html
標籤:
