2011-09-17 1 views
2
click <a href="javascript:validate('http://www.google.com');">here</a> to open google.com 

を削除:正規表現私は、次の上記の文章を交換する必要があるいくつかのテキストAAのハイパーリンクに

click <a href="http://www.google.com">here</a> to open google.com 

をC#の

+4

HtmlAgilityPack:http://htmlagilitypack.codeplex.com/ –

+0

オースティンは、このユースケースのRegex解析にDOMを使用することが望ましいソリューションかもしれないので、これを回答として提出する必要があります。 –

答えて

1
Regex regex = new Regex ("href\=\".+?'(.+)'", 
      RegexOptions.IgnoreCase); 
     MatchCollection matches = regex.Matches(text); 

でこれを行うために、正規表現で私を助けてくださいグループ1を抽出する必要があります:

matches .Groups[1] 

これはあなたが割り当てる新しい値です。 HtmlAgilityPack

using System; 
using System.Text.RegularExpressions; 

class MyClass 
{ 
    static void Main(string[] args) 
    { 
     string pattern = @"<a href=\"[^\(]*\('([^']+)'\);\">"; 
     Regex r = new Regex(pattern, RegexOptions.IgnoreCase); 
     string sInput = "click <a href=\"javascript:validate('http://www.google.com');\">here</a> to open google.com"; 

     MyClass c = new MyClass(); 

     // Assign the replace method to the MatchEvaluator delegate. 
     MatchEvaluator myEvaluator = new MatchEvaluator(c.ReplaceCC); 

     // Write out the original string. 
     Console.WriteLine(sInput); 

     // Replace matched characters using the delegate method. 
     sInput = r.Replace(sInput, myEvaluator); 

     // Write out the modified string. 
     Console.WriteLine(sInput); 
    } 

    // Replace each Regex cc match 
    public string ReplaceCC(Match m) 
    { 
     return "click <a href=\"" + m.Group[0] + "\">"; 
    } 
} 
0

オースティンが示唆されているようにHTMLを解析すると、これを行うにははるかに効率的な方法ですが、あなたは絶対にREGEXを使用する必要がある場合には、このような何か(referenced from MSDN System.Text.RegularExpressions Namespace)をしてみてくださいHTMLを解析するのに適した方法です。

1

ここに行く:

正規表現:

(?<=href\=")(javascript:validate\('(?<URL>[^"']*)'\);) 

コード:

string url = "click <a href=\"javascript:validate('http://www.google.com');\">here</a> to open google.com"; 
Regex regex = new Regex("(?<=href\\=\")javascript:validate\\('(?<URL>[^\"']*)'\\);"); 
string output = regex.Replace(url, "${URL}"); 

出力:

click <a href="http://www.google.com">here</a> to open google.com 
1

ありません正規表現が必要:

var s = 
    inputString.Replace(
     "javascript:validate('http://www.google.com');", 
     "http://www.google.com"); 
+0

私は、url(http://www.google.com)が毎回同じではないため、OPは正規表現を使用したいと考えています。私は彼が単に 'Replace'を使うことが可能であれば、正規表現でこれをどうやって行うのか尋ねるつもりはないと思う。 – chown

+0

はい、私はそれもやっていますが、彼が尋ねたことから私はそれを派生できませんので、私は彼が求めたものに答えるように努めました。 –