我有很长的代码列表:
BR 1111 BR 2222 CO 3333
我需要从他们中删除空间,以便他们最终:
BR1111 BR2222 CO3333
我试过这个无济于事:
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>
我做错了什么? THX
答案 0 :(得分: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
跳过
答案 1 :(得分:0)
正则表达式/([A-Z]{2})\s+(\d{4})/
应该可以正常工作:
基本上 - 来自A-Z的两个字母后跟1到无限空格,后跟4位数字。
preg_replace("/([A-Z]{2})\s+(\d{4})/", "$1$2", $string);
如果您只想删除所有空格,str_replace(" ", "", $string)
或/ +/
的正则表达式可以解决问题:
str_replace(" ", "", $string);
或
preg_replace("/ +/", "", $string);
答案 2 :(得分:0)
如果您只需删除空格字符,则有两个选项:
正则表达式:
$s = preg_replace("/ /", "", $s);
非正则表达式:
$s = str_replace(" ", "", $s);
但是,如果您需要删除两个非数字字符和4位数之间的空格,请使用:
$s = preg_replace("/(?<=\D{2}) (?=\d{4})/", "", $s);