我有一大塊文字的兩個整數之間,該文本有這樣201014120 - 10
文字的幾次出現。還有帶正常連字符( - )的文字。查找和替換一個連字符( - )可變長度
我想要做的,是用逗號,
但不替換文本中的任何其他連字符來代替兩個數字之間的連字符。我想用PHP的preg_replace
做到這一點。
的數字是不一樣的,並且每個號碼的長度不會爲所有文字相同。
我已經嘗試不同類型的正則表達式,既與代碼以及與此非常好的website。
我有一大塊文字的兩個整數之間,該文本有這樣201014120 - 10
文字的幾次出現。還有帶正常連字符( - )的文字。查找和替換一個連字符( - )可變長度
我想要做的,是用逗號,
但不替換文本中的任何其他連字符來代替兩個數字之間的連字符。我想用PHP的preg_replace
做到這一點。
的數字是不一樣的,並且每個號碼的長度不會爲所有文字相同。
我已經嘗試不同類型的正則表達式,既與代碼以及與此非常好的website。
您可以使用lookaround,以確保您只匹配連字符包圍數字:
preg_replace('/(?<=\d)\s*-\s*(?=\d)/', ', ', $input);
(?<=\d)
爲正回顧後:它僅允許在它是由一個數字前面的正則表達式匹配。相反,(?=\d)
是積極的前瞻。正則表達式將匹配(並因此替換)連字符周圍的任何空格。
非常感謝!這就是訣竅! – Rune
嘗試:
$str='e-mail 201014120 - 10 e - mail 201014120-10';
echo preg_replace('/(\d+\s*)-(\s*\d+)/','${1},${2}',$str);
>>> e-mail 201014120 , 10 e - mail 201014120,10
比賽(\d+\s*)-(\d+\s*)
:
\d+ # One or more digits
\s* # Zero or more white space characters
- # Literal hypen
() # Capture group
更換${1},${2}
${1} # The first captured group
, # A literal comma
${2} # The second captured group
未經測試:
preg_replace("/(\d+)-(\d+)/g","$1,$2",$text);
,或者,如果您的文字是指出,「數字」,「空格」「字號」,「空白」,「數字」
preg_replace("/(\d+\w*)-(\w*\d+)/g","$1,$2",$text);
<?php
$string = '201014120 - 10';
$pattern = '/(\d+) - (\d+)/';
$replacement = '$1,$2';
echo preg_replace($pattern, $replacement, $string);
?>
給你的字符串的樣品 – Afsar