我有一个处理电子邮件的PHP脚本,我想抓住这样的字符串:
>> John replied with a nice hi...
>> then added a second hi...
>
>> Ray said hello
请注意,第3行仅包含>
而非>>
和normalise it
,即。把它变成:
>> John replied with a nice hi...
>> then added a second hi...
>>
>> Ray said hello
换句话说,我想要抓住非空行,它以>
&用>>
我的问题可能看起来毫无价值,但我有一个很好的正则表达式,需要这些>
&格式化它们,即。
>> John replied with a nice hi...
>> then added a second hi...
>>
>> Ray said hello
变为
[quote]
John replied with a nice hi...
then added a second hi...
Ray said hello
[/quote]
上面的场景打破我的格式&使最终输出看起来像这样:
[quote_level_1]
John replied with a nice hi...
then added a second hi...
[/quote_level_1]
[quote_level_2]
[/quote_level_2]
[quote_level_1]
Ray said hello
[/quote_level_1]
我的问题是我是否可以使用正则表达式处理这种情况?我尝试了许多正则表达式,但没有一个给我正确的结果:(
我正在使用 PHP 5.4
我担心我没有准确地提出我的问题(对不起),我想要的是抓住非空行,以>
&将其替换为>>
,但仅当相关行位于以>>
我希望我澄清了我的问题,抱歉!
答案 0 :(得分:2)
我想捕捉以>开头的非空行。并用>>
替换它们
正则表达式看起来像这样:
/^>(?=[^>])/m
/
是分隔符,^
匹配行的开头(因为我们使用m
修饰符指定了多行模式),然后指定我们必须匹配在第一个>
之后,某些不是>
。
您可以在PHP中使用它:
preg_replace( '/^>(?=[^>])/m', '>>', $str)
你可以从this demo看到这打印出来:
>> John replied with a nice hi...
>> then added a second hi...
>>
>> Ray said hello
答案 1 :(得分:0)
http://php.net/manual/en/function.preg-replace.php
这似乎是一个简单的正则表达式应用程序。
$normalized_text = preg_replace("/^>(.+)/m", ">>${1}", $your_text);