私はこのような文字列を持っています:
static String name = "what is the language used in android <img height=\""+height+"\" width=\""+width+"\">";
私はその場で渡しているheight
との値を取得する必要width
があります.今、私は個々のアイテムに基づいて値を取得する必要がある状況にあります.
正規表現を試しましたが、うまくいきません。
これを使用できます:
int height = 0;
int width = 0;
Pattern h = Pattern.compile("height=\"([0-9]*)\"");
Pattern w = Pattern.compile("width=\"([0-9]*)\"");
Matcher m1 = h.matcher(name);
Matcher m2 = w.matcher(name);
if (m1.find()) {
height = Integer.parseInt(m1.group(1));
}
if (m2.find()) {
width = Integer.parseInt(m2.group(1));
}
System.out.println(height);
System.out.println(width);
次の単純な正規表現を試してください。
<img\s+height="(\d+)"\s+width="(\d+)"\s*>
そしてあなたのコード:
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("<img\\s+height=\"(\\d+)\"\\s+width=\"(\\d+)\"\\s*>");
Matcher regexMatcher = regex.matcher(inputString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group(1));
説明:
\d
任意の 10 進数に一致します。
\s
任意の空白文字に一致します。
(subexpression)
一致した部分式をキャプチャします
これは高さを取得するために機能するはずだと思います:
(?<=height=")[^"]*(?=")|(?<=height=')[^']*(?=')
次に、その正規表現で の 2 つのインスタンスheight
を width に置き換えるだけで、幅を取得できます。
これもおそらく機能し、より簡潔です。
(?<=height=("|')).*?(?=\1)