我正在寻找一个正则表达式来过滤掉html文件中的所有\ r \ n,但是如果有一个textarea,则应该在没有删除输入的情况下传递它。
我正在使用.NET(C#)技术。
答案 0 :(得分:3)
不要使用正则表达式 - 使用HTML解析器。
答案 1 :(得分:2)
说到HTML解析器,Html Agility Pack非常适合解决此类问题。
答案 2 :(得分:0)
替代方法:
(<textarea>(.*?)</textarea>)
答案 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解析器。