Skip to main content
 首页 » 编程设计

c#之为什么开头和结尾的正则表达式在 C# 上不起作用

2024年01月28日25mengfanrong

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

 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> .