textarea的正则表达式

时间:2009-12-02 20:01:58

标签: c# regex

我正在寻找一个正则表达式来过滤掉html文件中的所有\ r \ n,但是如果有一个textarea,则应该在没有删除输入的情况下传递它。

我正在使用.NET(C#)技术。

5 个答案:

答案 0 :(得分:3)

不要使用正则表达式 - 使用HTML解析器。

答案 1 :(得分:2)

说到HTML解析器,Html Agility Pack非常适合解决此类问题。

答案 2 :(得分:0)

替代方法:

  1. 使用正则表达式查找存在textarea元素的位置(在字符串中)。 适用于此的正则表达式为:(<textarea>(.*?)</textarea>)
  2. 从除#1。
  3. 上找到的地点以外的任何地方删除\ r \ n字符

答案 3 :(得分:0)

这与我之前给过的this answer非常相似。

幸运的是,.NET具有balanced matching功能。

所以你可以这样做:

(<textarea[^>]*>[^<>]*(((?<Open><)[^<>]*)+((?<Close-Open>>)[^<>]*)+)*(?(Open)(?!))</textarea>)|\r\n

然后你可以执行$ 1的替换值。

这里有效: http://regexhero.net/tester/?id=292c5529-5fe8-42e9-8d72-d7ea9ab9e1fe

希望有所帮助。使用这种平衡匹配的好处是它足以处理HTML固有的嵌套标记。

然而,它仍然不是100%可靠。评论仍然可以将其抛弃。当然,如果您需要进行更改,这也是一个非常复杂的正则表达式。所以你可能仍然想要使用html解析器。

答案 4 :(得分:0)

阅读本文:  RegEx match open tags except XHTML self-contained tags

这个问题就像说你怎么用锤子做螺栓。现在我敢肯定,如果你有足够的决心,你可以用锤子拧紧螺栓。然而,至少可以说是困难和有问题的,并且你有可能通过尝试来破坏某些东西。

退后一步,抛弃你的锤子是最好的工具并返回工具箱的假设,如果你在那里挖掘,你会找到一个更好的工具,称为HTML解析器。