C# 在c中使用嵌入式api正则表达式#
Embeddely有一个很棒的正则表达式生成器,您可以使用它来验证服务URL()的正确性。它生成javascript正则表达式,但不幸的是,它不生成c#regex表达式。但据我所知,c#使用相同的ECMA正则表达式定义,因此我应该能够在c中使用# 因此,我想要实现的是从embdly站点获取生成的正则表达式,然后将其粘贴到我的c#代码中 javascript正则表达式如下所示: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
/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
- 删除字符串开头和结尾附近的
和(
)
最后,有一个选项允许您传入/regex/i,并以JavaScript处理的方式对其进行解释。谢谢!您完全理解我,但下次我仍会尝试更具体一些。@是我的原因!这仍然是不对的。首先,您仍在最后添加
]
。你想去掉前面的/
和后面的/i
,但是(
和)
正在做有用的工作;对于那些需要更多(功能性)代码的人,我在codeplex上创建了一个项目: