代码之家  ›  专栏  ›  技术社区  ›  streetparade

在PHP中,正则表达式将myname\u mysurname与“”关联

  •  1
  • streetparade  · 技术社区  · 14 年前

    我需要一个正则表达式来替换这样的字符串

    "Myname _MySurename"  with "Myname" 
    

    这意味着我只需要我的名字,所以“我的名字”应该去掉。

    我尝试了类似于“/”/“的操作,但它只替换了“(下划线)”。 如何在PHP中做到这一点?

    3 回复  |  直到 14 年前
        1
  •  1
  •   rubber boots    14 年前

    从你的描述来看,很明显你
    知道 哪里 你的绳子必须 是 分裂的 .
    因此:最好不要使用regex替换,
    但使用regex split:

    preg_split('/\s*_/', $text)
    

    这将返回已拆分条目的列表, 获取第一个,例如:

    ...
    $names = 'Myname_MySurename'; #  'Myname _MySurename';
    # print first element of splitted array
    $firstname = array_shift( preg_split('/\s*_/', $names) );
    ...
    

    当做

    RBO

        2
  •  2
  •   codaddict    14 年前

    您可以替换 underscore 以及以下内容 word AS:

    $str = preg_replace('/_\w+/','',$str);
    

    看起来名字后面还有一个空格。所以你可以使用:

    $str = preg_replace('/\s*_\w+/','',$str);
    
        3
  •  0
  •   Turbotoast    14 年前

    尝试:

    /\s_.+$/
    

    “替换空格(空格),后跟下划线和若干字符”。这个 $ 确保这与字符串的末尾匹配。

    这是未经测试的,但应该可以工作。