【问题标题】:Regex Expression as String Literal C# .NET正则表达式作为字符串文字 C# .NET
【发布时间】:2018-08-01 18:46:20
【问题描述】:

我正在尝试使这个正则表达式成为字符串文字,虽然我可以让它在在线评估器中匹配,但在 Visual Studio 中却不能完全得到它。我知道这是我的转义字符的问题,任何帮助将不胜感激。

string pattern = " ^getelementbyid\("(.*?)\" "

尝试在正则表达式评估器 (regex101.com) 中使其成为字符串文字、有效的正则表达式

Regex regex = new Regex(pattern);

【问题讨论】:

  • 您忘记将字符串文字中的引号字符 " 转义为 \"

标签: c# .net regex string


【解决方案1】:

我相信这就是你要找的东西:

string pattern = @"^getelementbyid\(""(.*?)""";

附: - 看起来你正在解析 JavaScript。由于 JavaScript 中的字符串可以包含在双引号或单引号中,因此您可以像这样使您的正则表达式更加健壮:

string pattern = @"^getelementbyid\(['""](.*?)['""]";

这将匹配 getelementbyid("myID" 以及 getelementbyid('myID'

【讨论】:

  • 谢谢你,这对我来说效果很好,单人和双人住宿是一个奖励。干杯。
  • 它也将匹配getelementbyid('myID"getelementbyid("myID'。最好使用@"^getelementbyid\((['""])(.*?)\\1" 来检查字符串的开头和结尾引号是否相同。
【解决方案2】:

不完全确定您要匹配的内容,但根据您尝试执行的操作,我认为您可能有 2 个问题。

1) 正如乔指出的那样,您在 getelementbyid 之后的第一个引号中缺少转义。

2) 在 getelementbyid 之后的第一个反斜杠之前,您还缺少转义符。

由于您没有向我们提供您要验证的内容的示例,但这只是猜测。

看看以下内容是否能满足你的需求:

string pattern = " ^getelementbyid\\(\"(.*?)\" ";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2015-03-30
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多