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

标签 c# regex

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

 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/

相关文章:

使用组时,JavaScript 替换仅在正则表达式完全匹配时执行

python - 如何从 HTML 文件中提取标签并将其写入新文件?

python - 配置 Django URLS.py 以在用 end/重写 URL 后将 #anchors 保留在 URL 中

c# - 我的测试中有模型 usermanager

c# - ListBox 和 Checkbox 中存在大量数据的奇怪行为 [提供的最小项目]

regex - 用于将键值对解析为字符串映射的 Golang 正则表达式

javascript - 如何使用 JS Regex 从 google 查询链接获取查询值? (Chrome 扩展)

c# - C#中的控制台路径是什么?

c# - 如何使用 Quartz 调度程序维护作业历史记录

c# - Windows XP/Vista/7/8/10 普通用户程序数据放哪里?