我有一个这样的字符串:
static String name = "what is the language used in android <img height=\""+height+"\" width=\""+width+"\">";
我需要获取 and 的值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
匹配任何十进制数字。
\s
匹配任何空白字符。
(subexpression)
捕获匹配的子表达式
我相信这应该适用于身高:
(?<=height=")[^"]*(?=")|(?<=height=')[^']*(?=')
然后,您可以height
在该正则表达式中替换 with width 的两个实例来获取宽度。
这可能也会起作用并且更简洁:
(?<=height=("|')).*?(?=\1)