簡體   English   中英

如何在Java中編寫正則表達式,同時考慮要查找的字符串的上下文?

[英]How do I write regular expression in Java that takes into account the context of the string I'm looking for?

我想解析一個HTML代碼並從表中的文本表示形式創建對象。 我有幾列,我想在每一行上保存某些列的上下文。 現在,我有了HTML代碼,並且我知道我應該使用Pattern和Matcher來獲取那些字符串,但是我不知道如何編寫所需的正則表達式。

這是我要解析的行:

<tr><td><a href="delirium.htm">Delirium</a></td><td>65...</tr>

因此,我想從該字符串中提取Delirium。 我該如何寫正則表達式

讓我得到介於htm"></a></td>之間的字符串

這是一個關於SO的常見問題,答案始終是相同的:正則表達式是用於解析HTML的較差且有限的工具,因為HTML不是常規語言。

您應該使用HTML解析器 ,例如HTML Parser

如果您對“常規語言”的含義感到好奇,請查看JMD,Markdown和“解析和編譯器概述” 正則表達式基本上是DFA(確定性有限自動機或確定性有限狀態機)。 HTML需要PDA(下推式自動機)進行解析。 PDA是帶有堆棧的DFA。 這就是它處理遞歸元素的方式。

htm">(.+)</a></td>

任意字符搜索(這是.+位)之間htm"></a></td>和返回什么在之間,Pattern.matcher()來使用(這就是為什么周圍有括號.+

http://www.regular-expressions.info/java.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM