为什么我的正则表达式找不到我的字符串?
Regex.Replace(" SCRIPT language=Javascript src=\"\"\r\ntype=text/javascript ",
"^language=Javascript$",
"language=\"Javascript\"",
RegexOptions.Multiline | RegexOptions.Compiled
);
^language=Javascript$
不工作。如果我删除它它会起作用,但我想确保部分相似的字符串不会被替换(它在我的测试中发生过)。字符串不是常量,我实际上使用变量,但这只是我使用的一种情况。有帮助吗?
最佳答案
嗯,这是因为 ^
代表字符串的开头 和$
字符串的结尾。您的正则表达式根本无法匹配。你可以使用
\blanguage=Javascript\b
如果您只是想确保 foolanguage=Javascript
是一种变通方法不匹配。但这在一定程度上取决于您期望的数据和填充到该方法中的数据。更安全的方法是
(?<= )language=Javascript(?= )
这将确保匹配前后有一个空格。你可以从那里让它变得更复杂(和可靠),例如
(?<= )language=Javascript(?= |>)
匹配偶数 <script type='text/javascript' language=Javascript>
.
关于c# - 为什么开头和结尾的正则表达式在 C# 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581297/