1

为什么我的正则表达式找不到我的字符串?

 Regex.Replace(" SCRIPT language=Javascript src=\"\"\r\ntype=text/javascript ",
    "^language=Javascript$",
    "language=\"Javascript\"",
    RegexOptions.Multiline | RegexOptions.Compiled
);

^language=Javascript$工作。如果我删除它,它会起作用,但我想确保部分相似的字符串不会被替换(它在我的测试中发生过)。字符串不是常量,我实际上使用变量,但这只是我使用的一种情况。有什么帮助吗?

4

1 回答 1

6

嗯,这是因为^代表了字符串的开始和字符串$结束。您的正则表达式根本无法匹配。你可以使用

\blanguage=Javascript\b

如果您只想确保foolanguage=Javascript不匹配,则可以作为一种解决方法。但这在一定程度上取决于您期望的数据以及该方法中的内容。更安全的方法是

(?<= )language=Javascript(?= )

这将确保比赛前后有一个空格。您可以从那里使它更复杂(和可靠),例如

(?<= )language=Javascript(?= |>)

匹配甚至<script type='text/javascript' language=Javascript>

于 2012-07-20T14:26:09.143 回答