繁体   English   中英

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

[英]Find exact text containing hyphen in html with 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)

有任何想法吗? 请帮忙...

我不能假设周围有空间,因为ABCDE可能是元素中的唯一文本

请记住以上情况,有两种情况会发生。

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

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

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

说明:

(?<=[>\\s])将向后查找> (li标签的闭合角)或\\s空白。

ABCDE将搜索文字。

(?=[<\\s])将向前查找< (li标签的打开角度)或\\s空白。

Regex101演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM