2009-09-03 17 views
0

私はHTMLページを持っています(内部アドレス帳アプリケーションの外です)、テーブルのフィールド名とフィールド値の両方を一致させようとしています。.NET正規表現 - ?

私がこれまででっち上げてきた正規表現はうまくキーと値のほとんどが一致する

"href.*?>(.*?)<\\/a.*>(.*?)<\\/span" 

です。問題は、値の一部もリンクであることです。

href="JavaScript:updateField(&quot;peopleType&quot;, &quot;390061&quot;, &quot;[email protected]&quot;, &quot;bob&quot;, &quot;Reg&quot;, &quot;Bob Bobson&quot;);" onMouseOver="window.status='Update this field if possible, else explain how to update it';return true;" onMouseOut="window.status='';return true;">Emp Type</a></span></td> 
<td nowrap=""><span style="font-family: Arial, Times New Roman, Courier New, Courier, monospace; color: #006699">Reg</span 

例文字列 -

例の文字列(作品リンクなし)(リンクで - 動作しません)

href="JavaScript:updateField(&quot;dept&quot;, &quot;390061&quot;, &quot;[email protected]&quot;, &quot;bob&quot;, &quot;Reg&quot;, &quot;Bob Bobson&quot;);" onMouseOver="window.status='Update this field if possible, else explain how to update it';return true;" onMouseOut="window.status='';return true;">Dept</a></span></td> 
<td nowrap=""><span style="font-family: Arial, Times New Roman, Courier New, Courier, monospace"> 
<a href="JavaScript:showDept('TheBobs');" onMouseOver="window.status='Show People in This Dept';return true;" onMouseOut="window.status='';return true;">TheBobs</a></span 

(キーをキャプチャ)前半はcorrectly.Theの問題を作品貪欲な*はリンクの終わりに至るまでマッチしており、最後のキャレットと非貪欲なものを見つけますキャプチャグループには何も残っていません。私は、リンク(第3キャプチャグループ - その中に/ Aとの)と、文字列のためだけ正常に動作します正規表現

"href.*?>(.*?)<\\/a.*>(.*?)(<\\/a>)?<\\/span" 

試してみましたので、私の第二の捕捉グループは働くリンクの近くに一致するが、しかし、それを閉じたリンクタグを探しているので(私は思う)、リンクではない値に対しては機能しません。私は思った?そのキャプチャグループの終わりにはオプションにする必要があります。

私はRegexOptions.IgnoreCaseと一致しています。 RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline。

大文字と小文字の両方の値に一致する正規表現を取得するにはどうすればよいですか?おかげさまで

+0

あなたのサンプルに含まれる "フィールド名"と "フィールド値"は正確に何ですか? – Lucero

答えて

3

私は、HTMLの前処理とregexの実装をトリップすることが知られているコンテンツを削除することを検討したいと思います。

テスターまでは、Regex Heroを使用することもできます。これは、SilverlightのRegex実装が.NETと互換性があるためです。

+1

+1 - 私はまともなオンライン正規表現のテスターを探していた、ありがとう! –

1

Regex Coachと呼ばれる無料のツールを使用すると、簡単に正規表現をデバッグできます。

0

試してみてください「/ A *>」

href[^<>]+>(.*?)<\\/a[^<>]*>(.*?)<\\/span 

私はそれがどのように見える、伝えることができるものであること、あまりにも貪欲であると私は常に正規表現のを書くときにできるだけ具体的にしてみてくださいからは...どの私はなぜ "[^ <] +"

1

"を使用しないでください。キャラクター。それは通常、あなたに何の問題も与えません...それは非特異的であるからです。このような

てみてください何か:

href=[^>]*>([^<]*)</a\s*>((?:(?!</span\s*>).)*) 

注:サンプルは名前と値のペアを返すのではなく、名前だけ(最初のキャプチャグループは名前であると仮定して)いないので、私は「ドンあなたはそれが一致すると期待するものを知っている。たぶん、より完全なサンプルを投稿し、キャプチャしたい部分を正確に指定してください。