我对正则表达式很新.我需要替换一行多行文本中的空格.替换规则如下:
使用不间断的空格(
)替换行首的所有空格.
用相同数量的非中断空格替换重复空格的任何实例(多个空格在一起).
不在线路的单个空间保持不变.
我使用Regex Coach来构建匹配模式:
/( ){2,}|^( )/
我们假设我有这个输入文本:
asdasd asdasd asdas1 asda234 4545 54 34545 345 34534 34 345
使用PHP正则表达式替换函数(如preg_replace()
),我想得到这个输出:
asdasd asdasd asdas1 asda234 4545 54 34545 345 34534 34 345
我很高兴使用正则表达式进行简单的文本替换,但是我无法解决如何在匹配中替换多次以获得我想要的输出.
我猜想找到每个空间并更换它会更容易.为此,请使用"预见"和"后视"组.
或者,找到一个\x20
由任何单个空格(\s
)引导或后跟的空格(); 但是,只能更换空间.
$str = "asdasd asdasd asdas1\n asda234 4545 54\n 34545 345 34534\n34 345\n"; print preg_replace("/(?<=\s)\x20|\x20(?=\s)/", " ", $str);
(因为降价解析,我选择了#160)
结果是:
asdasd asdasd asdas1 asda234 4545 54 34545 345 34534 34 345
有关详细信息,请查看PCRE和perlre.
回复评论
@ Sprogz:起初,我的想法是一样的.但是该示例显示了"\n " => "\n "
第1行和第2行之间的行.