回答
如果你只是想找到起始標籤,你可以使用:
"<a(?=[>\\s])[^>]*>"
如果您想獲得href屬性倒不如使用:
"<a\\s+[^>]*href=(['\"])(.*?)\\1[^>]*>"
這將捕獲鏈接到捕獲組2中。
其實這個比較好匹配整個開始標籤'「 \\ s])(([^>」'] *)|(([''])。*?\\ 4))*>「因爲它允許在屬性中使用'>'。當一個屬性包含'>' –
時,我還沒有能夠匹配href屬性的模式。明白了。這將捕獲href屬性值到捕獲組4. [' \\ s])((\\ s + href =([「'])(。*?)\\ 3)|([^>」' ])|(([''])。*?\\ 7))*>「' –
感謝兩種可能性 – simPod
你可以對陣:
"<a[^>]*>"
如果*
是java的「貪婪」(我想是的,這是正確的) 但你不能匹配< a whatever="foo" >
這一說法,因爲空格。
雖然下面是更好的,但更復雜的理解:
"<\\s*a\\s+[^>]*>"
(需要雙\\
因爲\
是一個java字符串特殊字符)
該處理前的可選空格並在a
之後至少有一個空格。 所以你不匹配<abcdef>
這不是一個正確的標籤。 (我假設你的標籤站在一條線上,並且你沒有啓用多線模式,否則它會變得更加複雜)。 你最後的*[^/]*?>
看起來有點奇怪,也許它不起作用。 。
確定可以檢查你正在做什麼:
<([a-z]+) *[^/]*?>
<([a-z]+)
匹配的東西,包含<
接着是[A-Z]至少一次。這由括號分組。
現在您使用的是*
這意味着定義的組([a-z])*
可能會出現多次,或者不會。
[^/]*
這意味着現在很百搭,但/
或沒有(因爲*
)的
問號是錯誤的,不知道該如何解釋。
最後一個字符>
與最後一個元素匹配,必須出現。
綜上所述,你的表達是錯誤的,不能工作:)
看看:http://www.regular-expressions.info/
這是一個很好的起點。
爲了讓您瞭解人們爲什麼總是說「不要嘗試用正則表達式解析HTML」,這裏是簡化的正則表達式的<a>
標籤匹配:
<\s*a(?:\s+[a-z]+(?:\s*=\s*(?:[a-z0-9]+|"[^"]*"|'[^']*'))?)*\s*>
它實際上是可能的標籤的使用正則表達式匹配。它並不像大多數人所期望的那麼容易。
另一方面,所有的HTML都不是「常規」的,所以你不能用正則表達式來完成。 (許多/大多數語言中的「正則表達式」支持實際上比「常規」支持更強大,但很少有足夠強大的功能來處理HTML等平衡結構。)
下面是上述表達式的細節:
<\s* < and possibly some spaces
a "a"
(?: 0 or more...
\s+ some spaces
[a-z]+ attribute name (simplified)
(?: and maybe...
\s*=\s* an equal sign, possibly with surrounding spaces
(?: and one of:
[a-z0-9]+ - a simple attribute value (simplified)
|"[^"]*" - a double-quoted attr value
|'[^']*' - a single quoted atttr value
)
)?
)*
\s*> possibly more spaces and then >
(在每個組的開始評論也談運營商在 組的結束,甚至在該組中。)
這裏還有其他可能的簡化 - 我寫的這從 內存,而不是從規格。即使你遵循規範,瀏覽器的容錯性也會更大,並會接受各種無效輸入。
- 1. 正則表達式在Java
- 2. 正則表達式在Java
- 3. 正則表達式模式在Java中
- 4. Java中的正則表達式(正則表達式和語法)
- 5. Java UIMA:正則表達式中的正則表達式變量?
- 6. Java正則表達式組與。* vs正常正則表達式
- 7. 形式的Java正則表達式PHP正則表達式
- 8. Java中的正則表達式在Shell腳本中的正則表達式
- 9. 在java中的正則表達式?
- 10. 在Java中反向正則表達式
- 11. EOL在Java中的正則表達式
- 12. 在java中的正則表達式
- 13. 要求正則表達式在java中
- 14. 在Java中的正則表達式
- 15. 正則表達式MetaMap在Java中
- 16. 在java中匹配正則表達式
- 17. 的Javascript正則表達式在Java中
- 18. 在java中的正則表達式
- 19. 在Java中的正則表達式
- 20. 在java中使用正則表達式
- 21. 在java中查找正則表達式
- 22. 在Java中構造正則表達式
- 23. 使用正則表達式在Java中
- 24. 在Java中的正則表達式android
- 25. 在java中管理正則表達式
- 26. 正則表達式的正則表達式的Java字符串
- 27. 將Java正則表達式轉換爲PHP正則表達式
- 28. 正則表達式:簡單的Java正則表達式問題
- 29. Java正則表達式來發現正則表達式
- 30. 的Javascript正則表達式爲Java正則表達式
你做錯了的主要事情是使用正則表達式來解析html。這是錯誤的工具。 –
你想完成什麼? – Krylez
你期待什麼發生?究竟發生了什麼? –