我需要将所有的点( . )替换为html标签中可用的“[DOT]”而不是标签的外部 . 即包含点( . )的属性值应替换为“[DOT]”而不是内部文本 .
示例标记
<link rel="stylesheet" href="27674557W.patent.001_files/27674557W.patent.001.css" type="text/css"/>
变化应该像:
<link rel="stylesheet" href="27674557W[DOT]patent[DOT]001_files/27674557W[DOT]patent[DOT]001[DOT]css" type="text/css"/>
我在正则表达式中尝试过这种模式 .
<(?:[^\.>]*)([\.])(?:[^>]*)>
替换c#中的代码是:
string inputText = <tagText>;
string pattern = @"<([^\.>]*)([\.])([^>]*)>";
inputText = Regex.Replace(inputText, pattern, "$1[DOT]$3", RegexOptions.Singleline);
上面的代码只替换选项卡中的第一个点,剩余的点不会改变 . 我需要在不使用c#中的任何循环的情况下单次更改 .
注意:仅更换角支架内部 . 不在innertext .
谢谢 .
4 回答
您可以使用此正则表达式替换html标记内的
.
:您可以尝试使用string.Replace() .
为什么不简单地使用
new Regex("\\.")
?适合我,见fiddle但是用正则表达式解析HTML是个坏主意 . 在您的情况下,您应该事先使用HTML解析器,然后提取属性
href
. 现在你可以继续你的正则表达式:或者甚至更简单,因为Jaime也没有正则表达式回答 .
你可以使用这个正则表达式:
<[a-z]+\s.*(\\.)?.*>
第一个字符集用于标记名称,接下来是空格,然后是任何字符,然后是点,然后是任何其他字符