#java #regex
#java #регулярное выражение
Вопрос:
У меня есть следующая строка в 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=""/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"">
к которому мне нужно применить регулярное выражение, чтобы мне нужно было извлекать только тексты 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();
}
теперь он извлекает только текст разработчика приложения.Как бы то ни было, чтобы найти другие текстовые значения, мне нужно использовать шаблоны и сопоставлять их повторно. Есть ли способ сделать это, чтобы рекурсивно находить значения и сохранять их в переменной Java?
Комментарии:
1.
while (matchersub51.find())
, неif(matchersub51.find())
.2. @saka: шаблон OP работает как есть, просто
if
должен быть заменен наwhile
— ideone.com/uravDh . Возможно, проблема заключается в добавлении значений к результату, я бы рекомендовал список строк ( ideone.com/BW8yAY ).
Ответ №1:
да, как предложил @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);
}
}