我有一个包含以下内容的字符串变量 -
BufferedReader.readLine().
我使用C#程序,我需要删除URL周围的那些尖括号,这意味着我想修改该变量以获取 -
<br/><p><http://google.com></p>
有人可以帮帮我吗?如何为任何一般表达方式实现这一目标?
转换:
<br/><p>http://google.com</p>
要
<br/><p><anythinghere></p>
答案 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之类的扩展或者您拥有的内容。我希望指出你正确的方向!