2016-10-26 9 views
1

私の入力、出力は次のようなものでなければなりませんregexを使って文の間にテキストを追加するには?

<option value="" disabled selected hidden> 

です:その後、私はこのコードを試してみました

<option value="" disabled="disabled" selected="selected" hidden=""> 

final String REGEX_DISABLED = "(?<=option value=\"\" disabled)(?=.*)"; 
    final String REPLACE_DISABLED = "=\"disabled\""; 
    Pattern disP = Pattern.compile(REGEX_DISABLED); 
    Matcher disM = disP.matcher(text); 
    text = disM.replaceAll(REPLACE_DISABLED); 

    final String REGEX_SELECTED = "(?<==\"disabled\" selected)(?=.*)"; 
    final String REPLACE_SELECTED = "=\"selected\""; 
    Pattern selP = Pattern.compile(REGEX_SELECTED); 
    Matcher selM = selP.matcher(text); 
    text = selM.replaceAll(REPLACE_SELECTED); 


    final String REGEX_HIDDEN = "(?<==\"selected\" hidden)(?=.*)"; 
    final String REPLACE_HIDDEN = "=“”"; 
    Pattern hidP = Pattern.compile(REGEX_HIDDEN); 
    Matcher hidM = hidP.matcher(text); 
    text = hidM.replaceAll(REPLACE_HIDDEN); 

それは、実際に働いたが、私はそれがより簡単なように頼まれたので、私は他の方法を適用しようとしましたので、私は本当に便利な、よりシンプルなものを見つけることができれば、私は期待していたが、それは動作しませんし、試してみましたいくつかの他の方法を探しています。

+0

あなたがXMLデータへの "文法的に" 正しい変更を加えるつもりと思われます。ヒント:XMLを理解するツールを使用してください。 XMLと正規表現は本質的に良い組み合わせではありません。後の**はXMLが使用するかもしれないすべての膨大なオプションをカバーすることはできません。 http://stackoverflow.com/questions/8577060/why-is-it-such-a-bad-idea-to-parse-xml-with-regexたとえば – GhostCat

答えて

0

これを試してみてください:

"<option(.*?)\\s+(disabled)\\s+(selected)\\s+(hidden)>" 

Explanation

Javaサンプル

final String regex = "<option(.*?)\\s+(disabled)\\s+(selected)\\s+(hidden)>"; 
final String string = "<option value=\"\" disabled selected hidden>\n\n" 
    + "<option value=\"adfsa\" disabled selected hidden>\n\n" 
    + "<option value=\"111\" disabled selected hidden>\n\n\n\n"; 
final String subst = "<option $1 $2=\"disabled\" $3=\"disabled\" $4=\"hidden\">"; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

// The substituted value will be contained in the result variable 
final String result = matcher.replaceAll(subst); 

System.out.println("Substitution result: " + result); 
+0

ありがとう!これは非常に役に立ちます! – firecatcher

関連する問題