我有字符串正则表达式
"product_default_shipping_cost:\['(.*)'"
和字符串
"product_sale_price:['19.99'], product_default_shipping_cost:['1.99'], product_type:['Newegg']"
我希望只获得1.99
。
我的代码:
Pattern pattern = Pattern.compile(regex_string);
Matcher m = pattern.matcher(html);
while (m.find()) {
for (int i = 1; i <= groupCount; i++) {
Log.w(TAG,m.group(i));
}
}
但我有1.99'], product_type:['Newegg']
奇怪的是它的正则表达式在python和SWIFT中完美运行但不是java。我无法改变这种规律。可能是什么问题以及如何解决它?
P.S我真的无法改变这种规律,需要动态
答案 0 :(得分:2)
尝试将其更改为:
product_default_shipping_cost:\['(.*?)'
.*?
是懒惰的,只会尝试匹配第一个'
答案 1 :(得分:2)
String[] myStringArray = {"Hello","World"};
for(String s : myStringArray)
{
//Do something
}
将匹配尽可能多的字符(“贪婪”)。
您可以使用非gready .*
,也可以限制匹配的内容:.*?
。
答案 2 :(得分:1)
您正在使用greedy
正则表达式.*
,尝试使用非贪婪,也称为lazy
,附加{{1} ,即:
?
product_default_shipping_cost:\['(.*?)'\]
<强>样本强>
的好解释