无法将php正则表达式转换为C#正则表达式
我想计算有特殊符号(下划线)的链接。我已经编写了regex,它在在线编辑器/php编辑器中运行良好,但在C#代码中不起作用:无法将php正则表达式转换为C#正则表达式,c#,php,regex,.net,C#,Php,Regex,.net,我想计算有特殊符号(下划线)的链接。我已经编写了regex,它在在线编辑器/php编辑器中运行良好,但在C#代码中不起作用: < (?(a)| img)\b [^>]*? \b(?(2)href | src)) \s*=\s* (?:"(?(?:\\.|[^\\"_#?&]++)*(?:_|(?[#?&]))(?:\\.|[^"\\]++)*)" | '(?(?:\\.|[^\\'_#?&]++)*(?:_|(?[#?&]))(?:\\.|[^'\\]++)*)') 但在C代码中,它给出了编
<
(?(a)| img)\b
[^>]*?
\b(?(2)href | src))
\s*=\s*
(?:"(?(?:\\.|[^\\"_#?&]++)*(?:_|(?[#?&]))(?:\\.|[^"\\]++)*)"
| '(?(?:\\.|[^\\'_#?&]++)*(?:_|(?[#?&]))(?:\\.|[^'\\]++)*)')
但在C代码中,它给出了编译错误
MatchCollection underscoreLinks = Regex.Matches(strIn, "<(?<Tag_Name>(a)|img)\b[^>]*?\b(?<URL_Type>(?(2)href|src)) \s*=\s*(?:"(?<URL>(?:\\.|[^\\"_#?&]++)*(?:_|(?<Query>[#?&]))(?:\\.|[^"\\]++)*)"| '(?<URL>(?:\\.|[^\\'_#?&]++)*(?:_|(?<Query>[#?&]))(?:\\.|[^'\\]++)*)')", RegexOptions.IgnoreCase | RegexOptions.Multiline);
[代码>Match收集<<代码>Match收集收集收集收集收集收集数据的中文中文中文中文中文中文中文中文中文<<<<代码>Mat收集收集收集收集收集收集数据的英国警方警方警方表面表面卖卖卖卖卖卖卖卖卖卖卖卖卖卖卖卖卖卖卖。比赛(strIn,,,]***????\b\b?\b?\b?\b((((((((2)以及(2)上述(2)以及(2)上述(2)2)2)以及(2)在场在场(2)在场在场在场在场)在场在场)的)的)在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场在场的)的)的,)3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3(***)3 3 3 3 3 3*********))*)“)”,RegexOptions.IgnoreCase | RegexOptions.Multiline);
有些事情需要纠正:
@“模式”
@“模式”加引号“
”[^\\\”35;?&]+
更改为(?>[^\\”35;?&]+
字符串模式=@”
<
(?(a)| img)\b
[^>]*?
\b(?(2)href | src))
\s*=\s*
(?:""(?(?>\\.|[^\\""_#?&]+)*(?:_|(?[#?&]))(?>\\.|[^""\\]+)*)""
| '(?(?>\\.|[^\\'_#?&]+)*(?:_|(?[#?&]))(?>\\.|[^'\\]+)*)')
";
正则表达式re=新正则表达式(模式,
RegexOptions.IgnoreCase | RegexOptions.Multiline
|RegexOptions.ignorepattern(空格);
MatchCollection下划线=re.Matches(文本);
你能在这里检查一下吗\b(?(2)href | src))\s*=\s*(?:“(?:\.[^\\\\\\\.[^\\\\\\\]++)*”(?(?:\.[^\\\\\\\.[^\\\\\\\\\\]+*)它不起作用-它的问题完全相同,因此同样的答案适用。我相信如果你理解我写的答案,你就可以自己更正这个问题。是的,我更正了。超出范围但无法执行此操作…请帮助]*\balt\s*=\s*“[^”]+”[^>]+>您是否转义了引号(我的答案中的第2项)?
MatchCollection underscoreLinks = Regex.Matches(strIn, "<(?<Tag_Name>(a)|img)\b[^>]*?\b(?<URL_Type>(?(2)href|src)) \s*=\s*(?:"(?<URL>(?:\\.|[^\\"_#?&]++)*(?:_|(?<Query>[#?&]))(?:\\.|[^"\\]++)*)"| '(?<URL>(?:\\.|[^\\'_#?&]++)*(?:_|(?<Query>[#?&]))(?:\\.|[^'\\]++)*)')", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string pattern = @"
<
(?<Tag_Name>(a)|img)\b
[^>]*?
\b(?<URL_Type>(?(2)href|src))
\s*=\s*
(?:""(?<URL>(?>\\.|[^\\""_#?&]+)*(?:_|(?<Query>[#?&]))(?>\\.|[^""\\]+)*)""
| '(?<URL>(?>\\.|[^\\'_#?&]+)*(?:_|(?<Query>[#?&]))(?>\\.|[^'\\]+)*)')
";
Regex re = new Regex( pattern,
RegexOptions.IgnoreCase | RegexOptions.Multiline
| RegexOptions.IgnorePatternWhitespace);
MatchCollection underscoreLinks = re.Matches(text);