我对正则表达式很差,但对于那些了解正则表达式的人来说,这应该非常简单。
基本上我会有一个这样的字符串:
<if>abc <else>xyz
我想要一个正则表达式,所以如果字符串包含<if> <else>
,它会将字符串拆分为两部分,并在<if>
和<else>
之后返回两个字符串。在上面的示例中,它可能返回一个数组,第一个元素为abc
,第二个xyz
。我对那些不使用正则表达式的方法持开放态度。
有什么想法吗?
答案 0 :(得分: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>
答案 1 :(得分:1)
在简单的情况下,正则表达式将适用于此。对于更复杂的情况(发生嵌套),您可能会发现解析字符串更容易,并使用简单的堆栈来获取所需的数据。
答案 2 :(得分: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;
}
?>