Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中使用正则表达式提取更多字符串_Java_Android_Regex - Fatal编程技术网

Java 在Android中使用正则表达式提取更多字符串

Java 在Android中使用正则表达式提取更多字符串,java,android,regex,Java,Android,Regex,输入是这样的: String text = "{\"definitions\":[{\"id\":\"com.sample.evaluationa\",\"name\":\"Evaluationa\",\"vers}{\"id\":\"com.sample.evaluationb\",\"name\":\"Evaluationb\",\"vers}"; Pattern pattern = Pattern.compile((Pattern.quote(definitions)) +"("+ (P

输入是这样的:

String text = "{\"definitions\":[{\"id\":\"com.sample.evaluationa\",\"name\":\"Evaluationa\",\"vers}{\"id\":\"com.sample.evaluationb\",\"name\":\"Evaluationb\",\"vers}";
Pattern pattern = Pattern.compile((Pattern.quote(definitions)) +"("+ (Pattern.quote(id)) +"(.+)" +(Pattern.quote(name))+"(.+)"+(Pattern.quote(rest))+")*");
com.sample.evaluationa","name":"Evaluationa","vers}{"id":"com.sample.evaluationb
The pattern is \Q{"definitions":[\E(\Q{"id":"\E(.+)\Q","name":"\E(.+)\Q","vers}\E)*
还有一些引语让它更透明

String definitions = "{\"definitions\":[";
String id = "{\"id\":\"";
String name = "\",\"name\":\"";
String rest = "\",\"vers}";
我的正则表达式如下所示:

String text = "{\"definitions\":[{\"id\":\"com.sample.evaluationa\",\"name\":\"Evaluationa\",\"vers}{\"id\":\"com.sample.evaluationb\",\"name\":\"Evaluationb\",\"vers}";
Pattern pattern = Pattern.compile((Pattern.quote(definitions)) +"("+ (Pattern.quote(id)) +"(.+)" +(Pattern.quote(name))+"(.+)"+(Pattern.quote(rest))+")*");
com.sample.evaluationa","name":"Evaluationa","vers}{"id":"com.sample.evaluationb
The pattern is \Q{"definitions":[\E(\Q{"id":"\E(.+)\Q","name":"\E(.+)\Q","vers}\E)*
我正在寻找id(com.sample.evaluation)

我的输出如下所示:

String text = "{\"definitions\":[{\"id\":\"com.sample.evaluationa\",\"name\":\"Evaluationa\",\"vers}{\"id\":\"com.sample.evaluationb\",\"name\":\"Evaluationb\",\"vers}";
Pattern pattern = Pattern.compile((Pattern.quote(definitions)) +"("+ (Pattern.quote(id)) +"(.+)" +(Pattern.quote(name))+"(.+)"+(Pattern.quote(rest))+")*");
com.sample.evaluationa","name":"Evaluationa","vers}{"id":"com.sample.evaluationb
The pattern is \Q{"definitions":[\E(\Q{"id":"\E(.+)\Q","name":"\E(.+)\Q","vers}\E)*
但我想:

com.sample.evaluationacom.sample.evluationb
在周期性地改变目标群体之后,还有什么有趣但不是很好的方式

title = regexMatcher.group(2);
我得到的只是(当然还有图案线)


+
意味着1无限字符,并且正则表达式引擎默认为贪婪,因此它将匹配尽可能多的字符

最好定义您可以在那里看到的字符类:
[a-z\.]+
用于
id
[a-z][a-z]+
用于
name

这些将自己工作,因为当点击
\
时,正则表达式引擎将停止,因为
\
不是最后一个类的一部分


如果您出于任何原因想要使用
+
,但要尽早停止,请在之后添加
,这样它将切换到惰性行为。(例如,
+?

+
表示1无限个字符,并且正则表达式引擎默认为贪婪,因此它将匹配尽可能多的字符

最好定义您可以在那里看到的字符类:
[a-z\.]+
用于
id
[a-z][a-z]+
用于
name

这些将自己工作,因为当点击
\
时,正则表达式引擎将停止,因为
\
不是最后一个类的一部分


如果您出于任何原因想要使用
+
,但要尽早停止,请在之后添加
,这样它将切换到惰性行为。(例如,
+?

您可以在java中处理该字符串,只需下载库即可 然后将
commons-lang3-3.1.jar
文件粘贴到libs文件夹中

像这样使用它

String formatedjsonstring=StringEscapeUtils.unescapeJava(yourjsonstring);
JSONObject obj=new JSONObject(formatedjsonstring);
JSONArray jsonArray=obj.getJSONArray("definitions");
不要把事情弄得太复杂。使用这个库,它会自动取消角色的外观

java转义后,字符将创建如下Json对象

String formatedjsonstring=StringEscapeUtils.unescapeJava(yourjsonstring);
JSONObject obj=new JSONObject(formatedjsonstring);
JSONArray jsonArray=obj.getJSONArray("definitions");
而不是使用for循环来解析那些json对象

for(int i=0;i<jsonArray.length();i++)
{
JSONObject obj=jsonArray.getJSONObject(i);
String id=obj.getString("id");
}

for(inti=0;i您可以在java中处理该字符串,只需下载库即可
然后将
commons-lang3-3.1.jar
文件粘贴到libs文件夹中

像这样使用它

String formatedjsonstring=StringEscapeUtils.unescapeJava(yourjsonstring);
JSONObject obj=new JSONObject(formatedjsonstring);
JSONArray jsonArray=obj.getJSONArray("definitions");
不要把事情弄得太复杂。使用这个库,它会自动取消角色的外观

java转义后,字符将创建如下Json对象

String formatedjsonstring=StringEscapeUtils.unescapeJava(yourjsonstring);
JSONObject obj=new JSONObject(formatedjsonstring);
JSONArray jsonArray=obj.getJSONArray("definitions");
而不是使用for循环来解析那些json对象

for(int i=0;i<jsonArray.length();i++)
{
JSONObject obj=jsonArray.getJSONObject(i);
String id=obj.getString("id");
}

用于(int i=0;我真的建议使用JSON解析器。说真的,使用类似Jackson的东西。你要走的路就像用勺子盖房子一样。你会被分叉。没错,将JSON转换成字符串,然后用正则表达式解析这个字符串不是个好主意。只是我在这方面是新手,所以我把简单的事情做得太复杂了我真的建议使用JSON解析器。说真的,使用类似Jackson的东西。你要走的路就像用勺子盖房子一样。那样你会被分叉。没错,把JSON变成字符串,然后用正则表达式解析这个字符串不是个好主意。只是我在这方面是新手,所以我把简单的事情弄得太复杂了D