我有一个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或regex的方法来准确匹配这些输入单词。也就是说,“ABCDE-kriterierna”应该只找到第二个列表元素,而不是第一个。输入字“ABCDE”应该只找到第一个列表元素,而不是第二个。
输入字“ABCDE-kriterierna”没问题。这个Jsoup CSS选择器只能找到第二个列表元素:
:containsOwn(ABCDE-kriterierna)
问题是我找不到输入字“ABCDE”的正则表达式/选择器,只能找到第一个列表元素。我不能使用正则表达式\sABCDE\s
,因为我不能假设周围的空格。
我尝试了以下内容,但所有人都发现了“ABCDE-kriterierna”。
:matchesOwn(\bABCDE\b)
:containsOwn(ABCDE)
有什么想法吗?请帮忙......
答案 0 :(得分:0)
我不能假设周围的空格,因为ABCDE可能是元素中的唯一文本
在发生这种情况时,请注意上述情况。
ABCDE
是一个被空格包围的单词。例如:<li>some text ABCDE some text</li>
ABCDE
只是列表标记中的单词,没有空格。例如:<li>ABCDE</li>
正则表达式: (?<=[>\s])ABCDE(?=[<\s])
说明:
(?<=[>\s])
将为>
(li标记的结束角度)或\s
空格看待。
ABCDE
会搜索文字。
(?=[<\s])
会预见<
(li标签的开放角度)或\s
空格。
<强> Regex101 Demo 强>