为什么不是开始,结束于在C#上使用regularrexpression?

pqs*_*qsk 1 c# regex

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

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

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

Joe*_*oey 6

那么,这是因为^代表了字符串的开始$字符串的结尾.你的正则表达式根本无法匹配.你可以用

\blanguage=Javascript\b
Run Code Online (Sandbox Code Playgroud)

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

(?<= )language=Javascript(?= )
Run Code Online (Sandbox Code Playgroud)

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

(?<= )language=Javascript(?= |>)
Run Code Online (Sandbox Code Playgroud)

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

  • 与正则表达式一样:了解您的输入是什么,可以是什么,以及您想要什么和需要什么.对于这样的问题,不会有一个通用的答案.特别是如果你只提供稀缺的细节.我给了你一个起点.从那里开始工作取决于你.我真的不能做得更多. (2认同)