检测角括号并在C#中删除它们

时间:2015-05-13 11:48:05

标签: c# regex

我有一个包含以下内容的字符串变量 -

BufferedReader.readLine().

我使用C#程序,我需要删除URL周围的那些尖括号,这意味着我想修改该变量以获取 -

<br/><p><http://google.com></p>

有人可以帮帮我吗?如何为任何一般表达方式实现这一目标?

转换:

<br/><p>http://google.com</p>

<br/><p><anythinghere></p>

2 个答案:

答案 0 :(得分:2)

您可以尝试查找任何没有关闭对应的实体的开放节点,这些实体不是自动关闭节点。然后,你可以抓住里面的东西:

var elt = "<br/><p><anythinghere></p>";
var rxNoTag = new Regex(@"(?!/)<(([\w:.-]+)[^<>]*(?<!/))>(?!.*</\1>)");
var rst = rxNoTag.Replace(elt, "$1");

输出:

<br/><p>anythinghere</p>

此外,您可以在RegexStorm进行查看和测试。

答案 1 :(得分:0)

在我回答之前,我觉得我必须问一些关于字符串的问题。是用户输入吗?它是从HTML页面还是数据存储中提取的?是以<br/><p><http://google.com></p>来找你还是用<http://google.com>包裹<br/><p></p>?在前一种情况下,您可以先使用调用string.Replace两次删除括号,然后再换行。如果是后者,你会遇到一些问题。我会说你最好的选择,假设你总是以http://something.com的形式获得一个网址,就是再次使用string.Replace<http://替换为http://.com> .com ID fieldname fieldvalue 1 country USA 2 language English 3 country India 4 language Hindi 。您也可以使用正则表达式完成此操作,这可以涵盖多种情况,如.org,.gov等,但我仍然是正则表达式的新手,所以如果你想采取这种方式,我会指导某人别的来帮助你。当然,您可以通过多次调用string.replace来覆盖.org之类的扩展或者您拥有的内容。我希望指出你正确的方向!