-3

我有一个这样的字符串:

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

我需要获取 and 的值heightwidth我正在即时传递它。现在我处于需要根据单个项目获取值的情况。

我尝试过正则表达式,但它们不起作用。

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 匹配任何十进制数字。

\s 匹配任何空白字符。

(subexpression) 捕获匹配的子表达式

于 2013-01-14T09:47:47.610 回答
0

我相信这应该适用于身高:

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

然后,您可以height在该正则表达式中替换 with width 的两个实例来获取宽度。

这可能也会起作用并且更简洁:

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