Java 如何对匹配模式的正则表达式的重复出现进行分组
我有一个java字符串Java 如何对匹配模式的正则表达式的重复出现进行分组,java,regex,Java,Regex,我有一个java字符串 59701=Application+Development"">app dev</a>| <a href=""/search/search.asp?cdlCustomFieldValue001=Data+Analytics+(formerly+Business+Intelligence)"">Data Analytics (formerly Business Intelligence)</a>| <a href=""/sea
59701=Application+Development"">app dev</a>| <a href=""/search/search.asp?cdlCustomFieldValue001=Data+Analytics+(formerly+Business+Intelligence)"">Data Analytics (formerly Business Intelligence)</a>| <a href=""/search/search.asp?cdlCustomFieldValueID012=Small+and+Midmarket+Cloud+Solutions"">Small and Midmarket Cloud Solutions</a></td></tr><tr class=""CstmFldRow noVpad CfProfessional"" style=""""><td valign=""top""><label class=""CstmFldLbl"">
59701=Application+Development”“>appdev ||
我需要对其应用正则表达式,以便只提取文本app dev、Data Analytics(以前称为Business Intelligence)和
中端市场云解决方案
我使用了下面的正则表达式
String text_string= "59701=Application+Development"">app dev</a>| <a href=""/search/search.asp?cdlCustomFieldValue001=Data+Analytics+(formerly+Business+Intelligence)"">Data Analytics (formerly Business Intelligence)</a>| <a href=""/search/search.asp?cdlCustomFieldValueID012=Small+and+Midmarket+Cloud+Solutions"">Small and Midmarket Cloud Solutions</a></td></tr><tr class=""CstmFldRow noVpad CfProfessional"" style=""""><td valign=""top""><label class=""CstmFldLbl"">";
Pattern pattern_sub51 = Pattern.compile("\"\">(.*?)</a>");
Matcher matchersub51 = pattern_sub51.matcher(text_string);
if(matchersub51.find())
{
store_variable=matchersub51.group(1).trim();
}
String text_String=“59701=Application+Development”“>app dev | |”;
Pattern Pattern\u sub51=Pattern.compile(“\”\”>(.*);
Matcher matchersub51=pattern_sub51.Matcher(text_string);
if(matchersub51.find())
{
store_variable=matchersub51.group(1.trim();
}
现在它只提取应用程序开发人员的文本。然而,要找到其他文本值,我需要使用模式并重复匹配。有没有一种方法可以递归地找到值并将它们存储在java变量中 是的正如@wiktor Stribizew所建议的,下面的代码是有效的。谢谢
import java.util.*;
import java.util.regex.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String text_string= "59701=Application+Development\"\">app dev</a>| <a href=\"\"/search/search.asp?cdlCustomFieldValue001=Data+Analytics+(formerly+Business+Intelligence)\"\">Data Analytics (formerly Business Intelligence)</a>| <a href=\"\"/search/search.asp?cdlCustomFieldValueID012=Small+and+Midmarket+Cloud+Solutions\"\">Small and Midmarket Cloud Solutions</a></td></tr><tr class=\"\"CstmFldRow noVpad CfProfessional\"\" style=\"\"\"\"><td valign=\"\"top\"\"><label class=\"\"CstmFldLbl\"\">";
Pattern pattern_sub51 = Pattern.compile("\"\">(.*?)</a>");
Matcher matchersub51 = pattern_sub51.matcher(text_string);
List<String> res = new ArrayList<>();
while(matchersub51.find())
{
res.add(matchersub51.group(1).trim());
}
System.out.println(res);
}
}
import java.util.*;
导入java.util.regex.*;
导入java.lang.*;
导入java.io.*;
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
String text_String=“59701=应用程序+开发\“\”>app dev|;
Pattern Pattern\u sub51=Pattern.compile(“\”\”>(.*);
Matcher matchersub51=pattern_sub51.Matcher(text_string);
List res=new ArrayList();
while(matchersub51.find())
{
res.add(matchersub51.group(1.trim());
}
系统输出打印项次(res);
}
}
while(matchersub51.find())
,而不是if(matchersub51.find())
@saka:OP模式按原样工作,只需将if
替换为while
-。可能问题在于将值添加到结果中,我建议使用字符串列表()。