为什么我的正则表达式找不到我的字符串?
Regex.Replace(" SCRIPT language=Javascript src=\"\"\r\ntype=text/javascript ",
"^language=Javascript$",
"language=\"Javascript\"",
RegexOptions.Multiline | RegexOptions.Compiled
);
^language=Javascript$
无效。如果我删除它有效,但我想确保一个部分相似的字符串不会被替换(它已经在我的测试中发生)。字符串不是常量,我实际上使用变量,但这只是我使用的一种情况。有什么帮助吗?
答案 0 :(得分:6)
嗯,这是因为^
代表字符串的开头,$
代表字符串的结尾。你的正则表达式根本无法匹配。你可以用
\blanguage=Javascript\b
作为解决方法,如果您只是想确保foolanguage=Javascript
不匹配。但这在很大程度上取决于您期望的数据以及该方法的内容。更安全的方式是
(?<= )language=Javascript(?= )
这将确保比赛前后有空格。你可以从那里使它变得更加复杂(和可靠),例如
(?<= )language=Javascript(?= |>)
甚至匹配<script type='text/javascript' language=Javascript>
。