我有,像這樣的字符串:PHP - 的preg_replace不匹配之外的字符匹配的字符串
// example
$str1 = " 10.503 GB 3.4 GiB ";
$str2 = " 40.29 KiB ";
$str3 = "14.3 GB 2.1 51 ";
這裏是我的正則表達式,匹配字符串其中「10.503 GB」,「3.4吉布」,「40.29昆明植物」和分別
$regex = '/(\d+\.\d+ [A-Za-z]+[^\s])/';
preg_match_all($regex, $str1, $out1);
preg_match_all($regex, $str2, $out2);
preg_match_all($regex, $str3, $out3);
「14.3 GB」所以,問題是,我怎麼能更換不匹配的與用戶自定義字符我的正則表達式匹配非字符?示例如下:
$char = 'A'; // assume this is user input
$str1 = " 10.503 GB 3.4 GiB ";
$str2 = " 40.29 KiB ";
$str3 = "14.3 GB 2.1 51 ";
/* preg_replace (or another preg_* magic here */
所以最後一個字符串將
$str1 = "AAAAA10.503 GBAA3.4 GiBAAA";
$str2 = "AA40.29 KiBAAAA";
$str3 = "14.3 GBAAAAAAAAAAAAA";
我知道在不使用的preg_replace的解決方案,而只是假裝的preg_replace是需要在這裏(或其他參看preg_ *如果你喜歡)
所以這可能嗎?如果是這樣,我該怎麼做到這一點?
如果不是PHP,您還需要支持哪種引擎?我想這個問題是回答。只有Boost可以通過條件替換模式正確地完成這項工作,其他人將產生非精確的輸出(在每次不匹配後有一個額外的'A')。看看另一個[PHP正則表達式演示](https://regex101.com/r/dO5aX0/2)。 –
@Casimir et Hippolyte給了我的問題一個完美的答案:)也感謝stribizhev的信息! –