2017-09-07 3 views
0

Javaの行の最後の属性を取得しようとしています。以下のコードを微調整し、 "battr"を見つける手助けをしてください。例えば、私は "attr"や "battr"のような属性を指定しましたが、それは何でもかまいません。は文字列内の属性名を見つける必要があります

System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*([a-z]+\\s*=).*","$1")); 

答えて

2

あなたはこれを試すことができます。

System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*(\\s([a-z])+\\s*=).*", "$1") 
      .replace("=", "").trim()); 

EDIT

あなたはあなたの要件については肯定先読みを使用することができます。

System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*((\\s|^)([a-z])+(?==)).*", "$1").trim()); 

の詳細情報については:Lookahead and Lookbehind Zero-Width Assertions

+0

ありがとうございます。下の文字列でも同じように調整することができますか? attr = \ "val1 \" battr = \ "val2 \"> – javapsy

+0

あなたは解決策を試しましたか?あなたが言及した文字列のために既に働いています。 。( "="、 "")。( ")"を置き換えるだけで、この '.replaceAll("。*(\\ s([az])+ \\ s * =)。* "、" $ 1 "ストリングの終わり。 –

+0

はい正規表現は正常に動作していますが、行が ""のような空白で始まらない属性が1つしかない場合、 – javapsy

関連する問題