c#regex删除标签之间的文本

时间:2017-12-08 16:28:11

标签: c# html regex html-parsing

我的文字包含许多标签,例如:

function get_chat_list($sender){
        global $conn;
        $sqlCode = "SELECT DISTINCT sender FROM chat WHERE connector LIKE '%$sender%' ";
        $sqlCode1 = "SELECT DISTINCT reciever FROM chat WHERE connector LIKE '$sender%'";
        var_dump($sqlCode1);
        $run = mysqli_query($conn,$sqlCode);
        $run1 = mysqli_query($conn,$sqlCode1);
        var_dump($run1);
        $recievers = array();
        while($reciever = mysqli_fetch_assoc($run)){
            if($reciever['sender'] == $sender){

            }else{
                $recievers[] = array('reciever'=>$reciever['sender']);
            }

        }

        while($reciever = mysqli_fetch_assoc($run1)){
            if($reciever['reciever'] == $sender){

            }else{
                $recievers[] = array('reciever'=>$reciever['reciever']);
            }

        }

        return array_unique($recievers);
    }

我需要删除标签和标签之间的所有文本 在这个例子中,我应该得到“主要文本”,因为它是唯一没有标记的文本。

我试过

<b class="bold"> some bold text </b> main text
<li>list text</li>
<script> script text </script>

但它会删除所有标签而不是它们之间的文字

我试过这个

   Regex.Replace(input, "<.*?>", String.Empty);

var regEx = new Regex(@"<(.+).*>.*<\/\1>");
var result = regEx.Replace(input, string.Empty);

我得到了

<b class="bold"> bold </b>
main text
<ul>
<li> list </li>
<li> list2 <li>
</ul>

1 个答案:

答案 0 :(得分:1)

我不确定为什么这些问题在没有评论的情况下被否定,但写得不是很好,但很清楚他想做什么。

你走了:

var regEx = new Regex(@"<(.+).*>.*<\/\1>");
var result = regEx.Replace(input, string.Empty);

请记住,在有效的HTML文档中,所有内容都将包含在某种标记中,因此您的结果应该始终没有。

警告:这绝不是一个全面或完整的解决方案,但它是一个很好的基础,从你的实际输入数据看起来开始。