我想获取文字beetwen标记"<p>"
和"</p>"
例如我有:
String stringText = "<html><head></head><body><p>Aa , aa.</p><p><b>Aa aa, aa.</b></p><p>Aa aa aa, aa.</p><p><i>Aa, aa.</i></p><p><b><i>B, b, b.</i></b></p><b>Aa aa, aa.</b></body></html>";
我只想得到这个:
"Aa aa Aa aa aa Aa aa aa aa Aa aa B b b "
没有昏迷和dot.And我希望每个单词都在String数组中,因为接下来我必须计算每个单词;
我也找到了一些例子,但我不知道我要写入Pattern.compile
private static final Pattern TAG_REGEX = Pattern.compile("<p>(.+?)</p>");
private static List<String> getTagValues(final String str) {
final List<String> tagValues = new ArrayList<String>();
final Matcher matcher = TAG_REGEX.matcher(str);
while (matcher.find()) {
tagValues.add(matcher.group(1));
}
return tagValues;
}
在我的程序中:
System.out.println(Arrays.toString(getTagValues(stringText).toArray()));
但它无法正常工作,任何人都知道我必须在Pattern.compile("");
写些什么?
现在我明白了:
[Aa, aa., <b>Aa aa, aa.</b></p><p>Aa aa aa, aa., <i>Aa, aa.</i></p><p><b><i>B, b, b.</i></b></p><b>Aa aa, aa.</b><p>]
答案 0 :(得分:0)
既然你尝试了一些东西,我们终于可以帮到你了。我做的第一件事是删除所有现有的标签,即每<xyz>
。那么你只剩下想要计算的文本了。下一步是拥有一个合适的拆分运算符。我选择用逗号和点作为分裂点。我知道它不是最好的方式,就像我做的那样,但我无法想出一个好的正则表达式来替换逗号所需的每个空格和点。删除标签后,字符串如下所示:
Aa , aa.Aa aa, aa.Aa aa aa, aa.Aa, aa.B, b, b.Aa aa, aa.
用逗号替换一些空格后,它看起来像这样:
Aa,,,aa.Aa,aa,,aa.Aa,aa,aa,,aa.Aa,,aa.B,,b,,b.Aa,aa,,aa.
现在我们在每个逗号和点分割String
。由于我们有一些地方,其中几个逗号相继出现,我们在数组中有空条目。在计数时,我们忽略带有if的空条目。 .trim()
是为了确保没有带有空格的条目可能会扭曲结果。
public static void main(String[] args) {
String stringText = "<html><head></head><body><p>Aa , aa.</p><p><b>Aa aa, aa.</b></p><p>Aa aa aa, aa.</p><p><i>Aa, aa.</i></p><p><b><i>B, b, b.</i></b></p><b>Aa aa, aa.</b></body></html>";
stringText = stringText.replaceAll("\\<\\w+\\>|\\<\\/\\w+\\>", "");
stringText = stringText.replaceAll(" ", ",");
String[] h = stringText.split(",|\\.");
int counter = 0;
for (String str : h) {
if (!str.trim().isEmpty()) {
counter++;
}
}
System.out.println(counter);
}