2009-07-28 107 views
0

我对正则表达式很穷,但对于了解正则表达式的人来说,这应该非常简单。所以如果字符串包含<if> <else>,它将该字符串转换成两个部分,并返回<if><else>后两个字符串用正则表达式分割包含<if><else>的字符串与正则表达式

<if>abc <else>xyz 

我想一个正则表达式:

基本上我都会有这样的字符串。在上面的例子中,它可能会返回一个数组,其第一个元素为abc,第二个为xyz。我很乐意接近不使用正则表达式。

有什么想法?

回答

2
// $subject is you variable containing string you want to run regex on 
$result = preg_match('/<if>(.*)<else>(.*)/i', $subject, $matches); 

// $matches[0] has the full matched text 
// $matches[1] has if part 
// $matches[2] has else part 

/i末使搜索区分大小写,同时允许<if><else><IF> <elSE>

0

你正在寻找的正则表达式为:

/<if>(.*)<\/else>(.*)/ 

你就会有一个问题,如果有多个<else>的,虽然。它可以根据你想要的结果进行编辑。

另请注意,即使在<if>之前有某些内容,此正则表达式也可以正常工作。

在PHP中,你会想要像下面这样的代码:

<?php 
$string = '<if>abc</else>xyz'; 
preg_match_all("/<if>(.*)<\/else>(.*)/", $string, $matches); 
foreach($matches[0] as $value) 
    { 
    echo $value; 
    } 
?> 
+0

你必须逃离`/`附近其他 – RaYell 2009-07-28 16:51:43

+0

对不起,错过了。编辑。 – 2009-07-28 16:56:23

1

正则表达式会在简单情况下为此工作。对于更复杂的情况(发生嵌套),您可能会发现解析字符串更简单,并使用简单堆栈来获取所需的数据。