2009-07-09 7 views
0

これは、 'src'が小文字で、一重引用符と二重引用符の両方を管理する場合に問題ありません。 私はCASE_INSENSITIVEフラグのパターンを作成し、テストデータにこの正規表現を大文字小文字を区別しないように変更する方法(srcタグを探す)

1. <html><img src ="kk.gif" alt="text"/></html> 
2. <html><img Src ="kk.gif" alt="text"/></html> 
3. <html><img sRC ="kk.gif" alt="text"/></html> (any charcter in 'src' can be uppercase/lowercase) 
4. <html><img SRC ="kk.gif" alt="text"/></html> 
5. <html><img src ='kk.gif' alt="text"/></html> 

答えて

7

を以下のために試合を戻すには、この表現をしたいと思います。 Pattern.compile(String, int)を参照してください。これは文字列全体に影響します。つまり、imgも意味します。

または安い方法でsrc[Ss][Rr][Cc]に変更してください。これはちょうどsrc部分に影響します。

+0

ありがとうございます。ちょっと興味があるんだけど;あなたはここで "安い方法"と言うと、効率的/高速であることを意味しますか? –

+0

私はそれが最も労力のかかる方法であることを意味しました。 – lavinio

+0

一度コンパイルして再利用してください。より効率的/より速く。 :) –

0

あなたは、パターンコンストラクタでケース非感受性を設定する必要が見here

を持っています。

2

HTMLを処理したい場合は、実際のHTMLパーサーを使用することをお勧めします。

私はJavaに精通していませんが、かなり選択しているようです:Open Source HTML Parsers in Java

これは、srcの前にある他の属性や、有効なHTMLである文字 '>'、または見積もりを含むsrc属性などのケースを扱うことを可能にします。おそらく他にもあるかもしれないトリッキー。私の頭の上オフ

0


だけ ケース非感受性がsrcに適用したい場合は、[S|s][R|r][C|c]srcを置き換える可能性があります。 "(?I)"

KT

+1

もちろん、実際のものはありません。 :) – lavinio

1

あなたが使用してinsesitve小文字ために式を設定することができる発現、使用のほんの一部のための

Regular expression: (?i)<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*> 

"(I:?一部)"

Regular expression: <img[^>]+(?i:src)\s*=\s*['"]([^'"]+)['"][^>]*> 

またはちょうどそれが

Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 
Pattern.compile

の第2引数を使用して行います

[]]

関連する問題