C# 在c中使用嵌入式api正则表达式#

C# 在c中使用嵌入式api正则表达式#,c#,regex,C#,Regex,Embeddely有一个很棒的正则表达式生成器,您可以使用它来验证服务URL()的正确性。它生成javascript正则表达式,但不幸的是,它不生成c#regex表达式。但据我所知,c#使用相同的ECMA正则表达式定义,因此我应该能够在c中使用# 因此,我想要实现的是从embdly站点获取生成的正则表达式,然后将其粘贴到我的c#代码中 javascript正则表达式如下所示: /http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|y

Embeddely有一个很棒的正则表达式生成器,您可以使用它来验证服务URL()的正确性。它生成javascript正则表达式,但不幸的是,它不生成c#regex表达式。但据我所知,c#使用相同的ECMA正则表达式定义,因此我应该能够在c中使用#

因此,我想要实现的是从embdly站点获取生成的正则表达式,然后将其粘贴到我的c#代码中

javascript正则表达式如下所示:

/http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|youtu\.be\/.*|.*\.youtube\.com\/user\/.*#.*|.*\.youtube\.com\/.*#.*\/.*|picasaweb\.google\.com.*\/.*\/.*#.*|picasaweb\.google\.com.*\/lh\/photo\/.*|picasaweb\.google\.com.*\/.*\/.*)/i
并且应该匹配URL,如:

到目前为止,我掌握的情况如下:

Regex regex = new Regex(
      "[/http:\\/\\/(.*youtube\\.com\\/watch.*|.*\\.youtube\\.com\\/"+
      "v\\/.*|youtu\\.be\\/.*|.*\\.youtube\\.com\\/user\\/.*#.*|.*\\."+
      "youtube\\.com\\/.*#.*\\/.*|picasaweb\\.google\\.com.*\\/.*\\/"+
      ".*#.*|picasaweb\\.google\\.com.*\\/lh\\/photo\\/.*|picasaweb"+
      "\\.google\\.com.*\\/.*\\/.*)/i]",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );
。。但这只给了我部分匹配

编辑: 解决方案:只需将Embeddely javascript正则表达式粘贴到下面代码段中的StremblyRegex字符串中

    string strEmbdlyRegex = @"/http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|youtu\.be\/.*|.*\.youtube\.com\/user\/.*#.*|.*\.youtube\.com\/.*#.*\/.*)/i";

string strRegx = strEmbdlyRegex.Remove(0, 1);
strRegx = strRegx.Remove(strRegx.IndexOf("("), 1);
strRegx = strRegx.Remove(strRegx.LastIndexOf(")/i"), 3);
strRegx = strRegx + "]";

regex = new Regex(
     strRegx,
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.ECMAScript
    | RegexOptions.Compiled
    );

对您的问题更具体一点会有所帮助,但我似乎让它工作(至少对您的两个测试字符串)。您只需清理一些无关的字符:

  • 使用
    @“
    语法将其转换为文字字符串(无转义反斜杠)
  • 从字符串开头删除
    [/
  • 从字符串末尾删除
    \i
  • 删除字符串开头和结尾附近的
此外,您可能不需要该选项,对于一个简单的URL,您可能也不需要该选项


最后,有一个选项允许您传入/regex/i,并以JavaScript处理的方式对其进行解释。

谢谢!您完全理解我,但下次我仍会尝试更具体一些。@是我的原因!这仍然是不对的。首先,您仍在最后添加
]
。你想去掉前面的
/
和后面的
/i
,但是
正在做有用的工作;对于那些需要更多(功能性)代码的人,我在codeplex上创建了一个项目: