我有一个arraylist:
List<String> lines = new ArrayList<String>();
包含网页的html。
我制作了一个arraylist'resList',其中包含搜索到的字符串“abcde”,并将所述6行html打印到控制台:
ArrayList<String> resList = new ArrayList<String>();
String searchString = "(?i).*abcde.*";
for (String curVal : lines){
if (curVal.matches(searchString)){
resList.add(curVal);
System.out.println(items);
输出
<span class="bl-title"> <a href="abcdefPHOBIA_00">ACRO - abcdefPHOBIA_00</a>
<span class="bl-title"> <a href="abcdefPHOBIA_11">ACRO - abcdefPHOBIA_11</a>
<span class="bl-title"> <a href="abcdefPHOBIA_22">ACRO - abcdefPHOBIA_22</a>
<span class="bl-title"> <a href="abcdefPHOBIA_33">ACRO - abcdefPHOBIA_33</a>
<span class="bl-title"> <a href="abcdefPHOBIA_44">ACRO - abcdefPHOBIA_44</a>
<span class="bl-title"> <a href="abcdefPHOBIA_55">ACRO - abcdefPHOBIA_55</a>
我想阅读所有字符串:
abcdefPHOBIA_00, abcdefPHOBIA_11, abcdefPHOBIA_22, abcdefPHOBIA_33, abcdefPHOBIA_44, abcdefPHOBIA_55
进入arrayList。
尝试拆分(“ - ”),然后尝试使用startsWith(),但这不是我想要的。 还尝试了一个带正则表达式的模式,但似乎没有取得多大进展。
在改善长期方面以及完成这项工作方面,哪种方式最有益,将会有所帮助。
如果问题不够详细,请道歉。
答案 0 :(得分:0)
尝试:
Pattern pattern = Pattern.compile("\"(abcde[^\"]*)\"");
for (String curVal : lines)
{
Matcher matcher = pattern.matcher(curVal);
while (matcher.find())
{
resList.add(matcher.group(1));
}
}
这将找到包含在双引号
中的格式为abcede。*的所有字符串答案 1 :(得分:0)
我使用了jsoup API。我认为这是一种操作数据的简单方法,而不是太多的代码!
这将转到所有标签,然后在每个标签中搜索“ACRO”中的文本。 然后我给了整个文本后,我将它们分成了一个由“ - ”分割的二维数组。 在那之后,One可以用数组做他喜欢的事情。
所以: - &gt; ACRO - abcdefPHOBIA_00
doc = Jsoup.connect("http://webpage.com").get();
Elements links = doc.select("a[href]");
String s = links.select("a:matches(ACRO)").first().text();
String[] str_arr = s.split(" - ");
//for example
System.out.println("before the - " + str_arr[0]);
System.out.println("after the - " + str_arr[1]);
在
之后 - abcdefPHOBIA_00