我只是想弄清楚正则表达式,找到任何不会立即前后跟空格的&符号。例如,它会找到“asdf& asdf”和“asdf& asdf”而不是“asdf& asdf”
这将在preg_replace中用于在前后添加空格。 (如果你想知道,问题是我遇到了一个带有错误的WYSIWYG,它会在&符号两侧剥去空格,我需要在事后添加它们)。想法?
答案 0 :(得分:5)
(\S&\S|\s&\S|\S&\s)
OR
OR
答案 1 :(得分:4)
&符号宽度不是在空格之后,也不是在空格之前,而不是两者之间:
(?<!\s)&|&(?!\s)
使用环视,因此仅捕获&符号。
答案 2 :(得分:1)
如果两边都没有空间,可以这样做
echo preg_replace('/ ?& ?/',' & ','asdf&asdf asdf& asdf asdf & asdf');
//asdf & asdf asdf & asdf asdf & asdf
如果双方都没有空格(回答问题标题),它将在asdf& asdf
上失败
echo preg_replace('/(?<! )&(?! )/',' & ','asdf&asdf asdf& asdf asdf & asdf');
//asdf & asdf asdf& asdf asdf & asdf
答案 3 :(得分:1)
在之前或之后具有非空格的&符号:
(&[^ ]|[^ ]&)
答案 4 :(得分:1)
我建议首先找到所有与左右字符无关的&符号,然后在断言后面使用负面看法,以确保两个字符都不是空格。
.&.(?<! & )
答案 5 :(得分:0)
([^\s]+&.+)|(.+&[^\s]+)
此正则表达式确保左侧xor &
字符右侧没有空格
答案 6 :(得分:0)
应该有效(未经测试):/([^\s]&|&[^\s])/
。如果您只关心空格而不是“任何空白字符”:/([^ ]&|&[^ ])/
答案 7 :(得分:0)