我需要一个正则表达式来替换像这样的字符串
"Myname _MySurename" with "Myname"
这意味着我只需要Myname,所以_MySurename应该被删除。
我尝试了类似“/ _ * /”的东西,但只替换了_(下划线) 我怎么能用PHP做到这一点?
答案 0 :(得分:2)
您可以将underscore
和以下word
替换为:
$str = preg_replace('/_\w+/','',$str);
看起来你的名字后面还有一个空格。所以你可以使用:
$str = preg_replace('/\s*_\w+/','',$str);
答案 1 :(得分:1)
根据你的描述,你很明显
知道你的字符串必须哪里
拆分。
因此:最好不要使用正则表达式替换,
但使用正则表达式拆分:
preg_split('/\s*_/', $text)
这将返回拆分条目列表, 得到第一个,例如由:
...
$names = 'Myname_MySurename'; # 'Myname _MySurename';
# print first element of splitted array
$firstname = array_shift( preg_split('/\s*_/', $names) );
...
此致
RBO
答案 2 :(得分:0)
尝试:
/\s_.+$/
“替换空格(空格),后跟下划线和多个字符”。 $
确保在字符串的末尾匹配它。
这是未经测试的,但应该有效。