Java 不';t工作正则表达式

Java 不';t工作正则表达式,java,android,regex,Java,Android,Regex,我有字符串正则表达式 “产品默认运输成本:\['(.*)” 和字符串 “产品销售价格:['19.99'],产品默认运输成本:['1.99'],产品类型:['Newegg']” 我只想要1.99。 我的代码: Pattern pattern = Pattern.compile(regex_string); Matcher m = pattern.matcher(html); while (m.find()) { for (int i = 1; i <= groupCount; i++

我有字符串正则表达式
“产品默认运输成本:\['(.*)”

和字符串

“产品销售价格:['19.99'],产品默认运输成本:['1.99'],产品类型:['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));
   }
}
Pattern=Pattern.compile(regex\u字符串);
Matcher m=pattern.Matcher(html);
while(m.find()){

对于(int i=1;i尝试将其更改为:

product_default_shipping_cost:\['(.*?)'

*?
是惰性的,只会尝试匹配第一个
尝试将其更改为:

product_default_shipping_cost:\['(.*?)'

*?
是惰性的,只会尝试匹配第一个

*
将匹配尽可能多的字符(是“贪婪的”)


您可以使用非格雷迪
*?
,也可以限制可以匹配的内容:
[^']*
*
将匹配尽可能多的字符(即“贪婪”)


您可以使用非gready
*?
,或者限制可以匹配的内容:
[^']*
您使用的是
贪婪的
正则表达式
*
,尝试使用非贪婪的,也称为
懒惰的
,方法是添加
,即:

product_default_shipping_cost:\['(.*?)'\]

Pattern=Pattern.compile(“产品默认发货成本:\['(.*?'\]);
Matcher m=pattern.Matcher(html);
while(m.find()){

对于(int i=1;i您正在使用一个
贪婪的
regex
*
,请尝试使用一个非贪婪的,也称为
懒惰的
,方法是添加一个
,即:

product_default_shipping_cost:\['(.*?)'\]

Pattern=Pattern.compile(“产品默认发货成本:\['(.*?'\]);
Matcher m=pattern.Matcher(html);
while(m.find()){

对于(int i=1;i)您不能更改正则表达式是什么意思?正则表达式字符串采用动态“奇怪的是,它的正则表达式在python和SWIFT中工作得非常好”你确信吗?根据这个测试,> >似乎不像你所描述的那样工作。无论如何,如果你不能改变正则表达式,你就不能解决你的问题,因为默认情况下<代码> *>代码>是贪婪的。我会考虑编写一个简单的解析器而不是使用正则表达式。你的意思是你不能改变正则表达式?正则表达式字符串是动态的。奇怪的是,它的正则表达式在python和SWIFT中完美地工作"你确信吗?根据这个测试,> >似乎不像你所描述的那样工作。无论如何,如果你不能改变正则表达式,你就不能解决你的问题,因为默认情况下<代码> *>代码>是贪婪的。我会考虑编写一个简单的解析器而不是使用正则表达式。我不能改变,这个字符串会变得动态。那么,我们希望为你做些什么呢?g、 你最好的办法是假装它,直到你成功并在
上拆分字符串,
我无法更改,这个字符串变得动态。你希望我们为你做什么?正则表达式是错误的。你最好的办法是假装它,直到你成功并在
上拆分字符串,