0

我有一长串代码:

BR 1111
BR 2222
一氧化碳 3333

我需要从它们中删除空间,以便它们结束:

BR1111
BR2222
二氧化碳3333

我试过这个无济于事:

preg_replace('/(\D{2})\s(\d{4})')

有任何想法吗?谢谢!

太感谢了。我正在尝试添加一个带有表单文本区域的 HTML 页面,以添加要清理的这些代码的列表:

<form name="f" action="clean.php" method="POST"> <textarea cols="70" rows="7" name="str" > <?php echo $str; ?> </textarea> <br /> <input type="submit" value=" Code Cleaner " style="font-size:18px; color:#ff0000;"> </form> 

我究竟做错了什么?谢谢

4

3 回答 3

0

这应该这样做:

$string = preg_replace('/([A-Z]{2})\s*([0-9]+)/','$1$2',$string);

用 测试BR 1111 BR 2222 CO 3333,它返回'BR1111 BR2222 CO3333' 或者,如果该列表恰好是一个简单的 csv 或 txt 文件,您可以使用以下 Vim 命令:

:%s/\([A-Z]\+\)\s*/\1/g

c如果您不确定,只需在末尾添加一个标志,并希望在替换之前查看每场比赛:

:%s/\([A-Z]\+\)\s*/\1/gc

y确认,并替换(删除空格),n跳过

于 2012-11-08T12:27:12.893 回答
0

正则表达式/([A-Z]{2})\s+(\d{4})/应该可以正常工作:

基本上 - 来自 AZ 的两个字母,后跟 1 到无限空格,后跟 4 位数字。

preg_replace("/([A-Z]{2})\s+(\d{4})/", "$1$2", $string);

如果你只是想删除所有空格,str_replace(" ", "", $string)或者一个正则表达式/ +/就可以了:

str_replace(" ", "", $string);

或者

preg_replace("/ +/", "", $string);
于 2012-11-08T12:27:26.753 回答
0

如果您只需要删除空格字符,那么您有两种选择:

  1. 正则表达式:

    $s = preg_replace("/ /", "", $s);
    
  2. 非正则表达式:

    $s = str_replace(" ", "", $s);
    

但是,如果您需要删除两个非数字字符和 4 位数字之间的空格,请使用:

$s = preg_replace("/(?<=\D{2}) (?=\d{4})/", "", $s);
于 2012-11-08T12:44:05.983 回答