regex
2016-04-13 8 views 0 likes 
0

文字列の正規表現を見つけて、この正規表現を無視し、文字列の残りの部分を処理したいとします。正規表現の結果を文字列で無視する方法

alt=('|").*('|") 

と私の文字列は次のとおりです:たとえば、私のパターンがある

<div class='divClass'><img src='image.png' alt="abcdef"></div> 

私はfinalyこの文字列を取得したい:

<div class='divClass'><img src='image.png'></div> 

ノート:alt属性の値が動的に変化します。

+0

どのフレーバー? JS? PHP? –

+0

サーバーのjava webでHTMLコードを解析したい。 –

+0

Java Web ...?もちろんJSじゃない? –

答えて

1

あなたはPHPが必要な場合:それは、第1および第3の結果にしたい文字列(alt="..."部分以外のすべてを)返します

(<img[^>]*?) alt=(['"]).*?\2([^>]*?>) 

$re = "/\\s*alt=([\"']).*?\\1/"; 
$str = "<div class='divClass'><img src='image.png' alt=\"abcdef\"></div>"; 
$subst = ""; 

$result = preg_replace($re, $subst, $str, 1); 
+0

正規表現で残りの文字列を見つける方法はありますか?私はPHPコードを書く代わりにこれを行う正規表現を見つけることを意味する?どのようにこのパターンを否定するか? –

+0

申し訳ありませんがあなたの必要性を理解していません@AtefehRashidi –

+0

OK。問題ない。ありがとう。 –

0

を、私はこの正規表現パターンを使用しますグループには、それらを連結するだけです。

str = str.replaceAll("(<img[^>]*?) alt=([\'\"]).*?\2([^>]*?>)", "$1$3"); 

注あなたは文字列を囲むために使用する正規表現内の引用符の種類をエスケープする必要があります。

この

は簡単に置換文字列に文字列の replaceAll(pattern, replacement)方法とグループプレースホルダ "$n"を使用して行われますあなたのJavaコードでリテラルを使用することができます。


パターンの説明:

Group 1 part to remove Group 3 
|----------||---------------||-------| 
(<img[^>]*?) alt=(['\"]).*?\2([^>]*?>) 
    \____/  \_____/ \/ \____/ 
     1.   2.  3. 1. 
  1. [^>]*?はimgタグを終了する任意の>文字が含まれていない可能な限り最短の文字列にマッチします。
  2. (['\"])は、一重引用符または二重引用符と一致します。二重引用符は、JavaでStringリテラル区切り文字として使用できるようにエスケープされています。後で正確な終値を照合できるように、グループにまとめられています。
  3. \2は、以前に一致した文字列属性値を正しく終了する引用符文字と一致します。
+1

FYI: '\ 2 'の中の' [^ \ 2] 'は後方参照ではなくエスケープシーケンスとして扱われます。 –

+0

[私はしない](https://regex101.com/r/pR5iR4/1) –

+0

@Thomas @ Wiktor私は自分のパターンを修正しました。ヒントをありがとう。 –

関連する問題