2011-04-08 259 views
1

我有类似这样的字符串:正则表达式表达

Hi, <<\name>> <<\surname>>, this is an example <<\test>>. 

我什么匹配的正则表达式和拆分此字符串:

"Hi, " 
<<\name>> 
" " 
<<\surname>> 
", this is an example " 
<<\test>> 
"." 

我想这一个:(<<\*.*?>>)|(>>*.*?<<),但没有按”工作。这是可能的? 谢谢。

+0

是<<*.?>>一个错字?这将是错误的。它是<<.*?>> – duedl0r 2011-04-08 13:42:08

+0

无论如何你想用(>>。*?<<)做什么?它对你的解决方案没有帮助,是吗?并可能甚至迷惑正则表达式 – duedl0r 2011-04-08 13:57:24

回答

0

使用str_replace

$str =' Hi, <<\name>> <<\surname>>, this is an example <<\test>>.'; 
$old= array('<<','>>'); 
$new =array('"<<','>>"'); 
$str2=str_replace ($old,$new,$str); 
//retruns Hi, "<<\name>>" "<<\surname>>", this is an example "<<\test>>". 
+1

也许他不是在PHP中开发? – duedl0r 2011-04-08 13:55:33

+0

对不起,但我想拆分不能取代。 Im'在VB.NET中开发 – batdan 2011-04-08 14:14:02

2

你可以使用这个表达式(它采用积极的向前看符号和积极lookbehinds):

<<.*?>>|(?<=>>|^).*?(?=<<|$) 

它匹配由<<>>符号括起来的字符串,字符串这是它们之间符号和字符串从开头到<<,最后从>>结束。

您可以在ideone上找到C#示例。

+0

非常感谢Alex ......就是这样! 唯一的一点是,这个正则表达式没有太多的回车,但从来不知道。 – batdan 2011-04-08 15:13:13