java - 使用 jsoup 在 html 中查找包含连字符的确切文本

标签 java html css regex jsoup

我有一个 HTML 文档,我需要能够在文档文本中找到可能包含或不包含连字符的完全匹配项。我正在使用 Java 和 Jsoup。

例如,HTML 文档可以包含以下内容:

<li>some text ABCDE some text</li>
<li>some text ABCDE-kriterierna some text</li>

<li>ABCDE</li>
<li>ABCDE-kriterierna</li>

我有一个输入字符串列表,我需要将其与 HTML 文档中的文本相匹配。其中两个输入字符串可以是“ABCDE”和“ABCDE-kriterierna”。 我需要一种使用 Jsoup 或正则表达式的方法来精确匹配这些输入词。也就是说,“ABCDE-kriterierna”应该只找到第二个列表元素,而不是第一个。并且输入单词“ABCDE”应该只能找到第一个列表元素,而不是第二个。

输入单词“ABCDE-kriterierna”没问题。这个 Jsoup CSS 选择器只会找到第二个列表元素:

:containsOwn(ABCDE-kriterierna)

问题是我找不到用于输入单词“ABCDE”的正则表达式/选择器,只能找到第一个列表元素。我不能使用正则表达式 \sABCDE\s 因为我不能假设周围的空间。 我尝试了以下方法,但都找到了“ABCDE-kriterierna”。

:matchesOwn(\bABCDE\b)
:containsOwn(ABCDE)

有什么想法吗?请帮助...

最佳答案

I can't assume surrounding spaces since ABCDE could be the only text in an element

请记住上述情况,发生这种情况有两种情况。

  1. ABCDE是一个被空格包围的词。例如:<li>some text ABCDE some text</li>

  2. ABCDE只是列表标记中没有空格的单词。例如:<li>ABCDE</li>

正则表达式: (?<=[>\s])ABCDE(?=[<\s])

解释:

(?<=[>\s])会回头寻找> (li 标签的闭合 Angular )或 \s一个空格。

ABCDE将搜索字面词。

(?=[<\s])将向前看 < (li 标签的张 Angular )或 \s一个空格。

Regex101 Demo

关于java - 使用 jsoup 在 html 中查找包含连字符的确切文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564655/

相关文章:

java - Java 有没有办法让编译器处理互斥的选项?

java - 如何使 maven-metadata.xml 具有与使用 maven 部署的 Artifact 相同的时间戳?

html - &lt;input type ="file"> 按扩展名限制可选文件

javascript - 图片上传的颜色选择器

css - Bootstrap 工具提示向上移动有反馈图标

java - 选择一个好的网络开发框架

java - 搜索后如何关闭SearchManager

html - 保持动画的连续性

javascript - 滚动到页面上的特定div时如何使页脚消失?

javascript - Bootstrap 3.x 导航栏不折叠