需要替换字符串中的所有字符,但字符串开头(或单词的一部分)除外。
例如输入:
{% extends "workout/base.html" %}
{% load static %}
{% block footer %}
<script type="text/javascript" src="{% static js/addWorkout.js %}">
</script>
{% endblock %}
结果应为:
MSFT *<E07004QY6W>
WOOLWORTHS W1157
GOOGLE*ADWS7924436927
COLES 0829
ROBLOX.COM 888-858-25
7-ELEVEN 2179
COLES EXPRESS 1896
php preg_replace能实现吗?
到目前为止尝试过:
答案 0 :(得分:3)
不确定这适用于其他边缘情况,但您可以尝试使用此替换:
$txt = preg_replace('~^[^*\s]+(?: \pL+(?!\S))*\K.*~m', '', $txt);
说明:
^[^*\s]+
在行的开头处取得所有不是空格或星号的内容。
(?: \pL+(?!\S))*
,最后用空格分隔的一组字母。
\K
从匹配结果中删除所有先前匹配的字符。
.*
获取将被替换的所有剩余字符。
答案 1 :(得分:0)
$in = array(
'MSFT *<E07004QY6W>',
'WOOLWORTHS W1157',
'GOOGLE*ADWS7924436927',
'COLES 0829',
'ROBLOX.COM 888-858-25',
'7-ELEVEN 2179',
'COLES EXPRESS 1896',
);
foreach ($in as $str) {
echo preg_replace('/[\h*]+[^\h*]+$/', '', $str),"\n";
}
<强>输出:强>
MSFT
WOOLWORTHS
GOOGLE
COLES
ROBLOX.COM
7-ELEVEN
COLES EXPRESS