次の文字列があります。
<div height="40px" width="30px" />
後に px を持つすべての数字を X 倍の値で正規表現に置き換えたいと思います。(X は変数です)。
したがって、X=3 の場合、結果は次のようになります。
<div height="120px" width="90px" />
X は、関数に取得する変数でなければならないことに注意してください
次のコードは、正規表現を使用して文字列を に30px
置き換えます。240px
s
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Example {
public static void main(String[] args) {
String s = "abc 30px def";
int var = 8;
Pattern patt = Pattern.compile("([0-9]+)px");
Matcher m = patt.matcher(s);
StringBuffer sb = new StringBuffer(s.length());
while (m.find()) {
int px = Integer.parseInt(m.group(1));
String next = String.valueOf(var * px) + "px";
m.appendReplacement(sb, Matcher.quoteReplacement(next));
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}
実行する手順は次のとおりです。
s
一致する文字列と各一致を
検索します。var
。px
して、置換文字列として渡します。プレーンな正規表現では計算できません。たとえば Perl にはいくつかの拡張機能がありますが、Java では利用できないと思います。したがって、長い道のりを歩む必要があります。
申し訳ありませんが、ワンライナーのソリューションはありません。(ただし、for ループが必要であることを除けば、それほど難しくはありません)。