2016-07-14 101 views
0

之间的空格字符所有出现我有这样查找特定的标签

"<content> </content><p>some content</p><content>  </content>" 

字符串我已经加入一号内容标签,并在第二内容标签之间的5空格之间,4个空格字符。所以总共有9个空格字符。

我想要一个正则表达式,它将与内容标记之间的所有空格字符完全匹配。

我已经试过这

/<content> +<\/content>/g 

但是这给了我2场比赛。我需要9个空格字符的匹配。正确的正则表达式是什么?

+0

内容标签中是否可以有空格以外的字符?总是有4或5个空格吗?如果不是,是否有最大数量的空格?什么是你想要替换空格的符号 - 字符或更长的字符串?所有的令牌都是相同的,或者对于不同长度的空间是不同的,或者对于每一个空间都是不同的? – Armali

+1

是的,可以有其他字符。但我只想找到那些内含空格的内容标签。并且每个空格字符都必须由一个更长的字符串代替。这个标记对于每个空间字符都是一样的。 –

回答

0

它给你2场比赛,因为有两次出现<content>标记(打开和关闭),其间有空格。

你需要的是这样的:

for (/<content>(+)<\/content>/g) { 
    print length $1; 
} 

,将捕获标签之间的空间,并打印出该字符串的长度(实质上的空格数)。

+1

但实际上我需要用一些标记来查找和替换内容标记之间的空格。使用上面的解决方案找到空格后,我将不得不用原始字符串中的标记替换标记。我想用php的'preg_replace'来替换内容标签中的空格字符 –

0

我想用PHP的preg_replace在 内容标签来代替空格字符

我不认为它可以只用preg_replace做事情。我建议:

$str = "<content> </content><p>some content</p><content>  </content>"; 
$str = preg_replace_callback('-<content>.*?</content>-', 
          function($found) 
          { return str_replace(' ', 'TOK', $found[0]); }, 
          $str 
          );