-3

私はこのような文字列を持っています:

static String name = "what is the language used in android <img height=\""+height+"\" width=\""+width+"\">";

私はその場で渡しているheightとの値を取得する必要widthがあります.今、私は個々のアイテムに基づいて値を取得する必要がある状況にあります.

正規表現を試しましたが、うまくいきません。

4

3 に答える 3

1

これを使用できます:

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);
于 2013-01-14T09:21:20.393 に答える
1

次の単純な正規表現を試してください。

<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) 一致した部分式をキャプチャします

于 2013-01-14T09:47:47.610 に答える
0

これは高さを取得するために機能するはずだと思います:

(?<=height=")[^"]*(?=")|(?<=height=')[^']*(?=')

次に、その正規表現で の 2 つのインスタンスheightを width に置き換えるだけで、幅を取得できます。

これもおそらく機能し、より簡潔です。

(?<=height=("|')).*?(?=\1)
于 2013-01-14T09:15:52.993 に答える