如何使用reqular表达式在java中获取html标记数据
我想从java中的html代码中获取标签数据。我已经提取了字符串中的HTML代码。但无法从标签中获取数据。谁能告诉我如何使用正则表达式吗。我不想使用解析器,因为它是一次性的工作 示例如下所示如何使用reqular表达式在java中获取html标记数据,java,html,regex,Java,Html,Regex,我想从java中的html代码中获取标签数据。我已经提取了字符串中的HTML代码。但无法从标签中获取数据。谁能告诉我如何使用正则表达式吗。我不想使用解析器,因为它是一次性的工作 示例如下所示 新起点 我需要动作标记值以及输入名称和值。你不应该真正使用正则表达式来解析HTML,你应该得到一个HTML解析器。Java有很多。然而,如果你真的想使用正则表达式,这里有一些方法 要获取action=“…”数据,请使用以下正则表达式: action="(.*?)" input.*?name="(.*
新起点
我需要动作标记值以及输入名称和值。你不应该真正使用正则表达式来解析HTML,你应该得到一个HTML解析器。Java有很多。然而,如果你真的想使用正则表达式,这里有一些方法
要获取
action=“…”
数据,请使用以下正则表达式:
action="(.*?)"
input.*?name="(.*?)"\s*value="(.*?)"
数据将存储在捕获组#1
工作原理:
action= # Select the action= attribute
"(.*?)" # Capture the data inside the quotes
input # Select the opening input tag name
.*? # Optional Data
name= # Select the name= attribute
"(.*?)" # Capture the data inside the quotes
\s* # Optional Whitespace
value= # Select the value= attribute
"(.*?)" # Capture the data inside the quotes
要获取输入名称和编号,请使用以下正则表达式:
action="(.*?)"
input.*?name="(.*?)"\s*value="(.*?)"
名称将存储在捕获组#1中,而值将存储在捕获组#2
工作原理:
action= # Select the action= attribute
"(.*?)" # Capture the data inside the quotes
input # Select the opening input tag name
.*? # Optional Data
name= # Select the name= attribute
"(.*?)" # Capture the data inside the quotes
\s* # Optional Whitespace
value= # Select the value= attribute
"(.*?)" # Capture the data inside the quotes
您可以使用Jsoup()。
我在Scala中这样做,但在Java中是一样的(它最初是针对Java的)。
例如
这只是为了获取html页面,然后您可以使用下一个变量轻松解析它。
我还添加了url->(if(url.startsWith(“http://”)url.startsWith(“https://”)url-else“http://”+url)旁边的内容
但是如果你知道所有的URL都是有效的,你就不必这么做
然后制作另一个变量:
String url = connection
.getElementsByAttributeValueContaining("href", "facebook.com")
.iterator()
.toList
.map(x => x.attr("href"))
例如,您可以使用在html页面中查找的任何其他url(第二个参数是regex,它将查找包含regex的字段的任何内容)
当您使用迭代器时,它会获取所有与您搜索的正则表达式匹配的字段,并会带来您需要的任何字段,这里我要求提供href,但您可以要求提供任何其他字段
或者你也可以使用
String url = connection
.getElementsByAttributeValueMatching("type", "rss|atom")
.iterator()
.toList
.map(x => x.attr("href"))
如果您正在寻找一个特定的匹配项(第二个参数在这里也是一个正则表达式,它将找到与您编写的正则表达式完全匹配的任何东西),当您执行迭代器时,它将获取与搜索的正则表达式匹配的所有字段,并将带来您需要的任何字段,这里我要求提供href,但您可以要求提供任何其他字段
希望这有帮助……那么还有什么其他方法?使用HTML解析器。大多数语言都有很多这样的解析器,包括Java。Java中有内置的HTML解析器吗?我不想使用外部库。“我不想使用解析器,因为这是一项一次性工作”使用解析器会比编写此问题更快ii.当我使用java时,我使用了模式pattern=pattern.compile(“action=\”(.*)\);Matcher-Matcher=pattern.Matcher(htmlString);但它仍然不匹配。很抱歉,我使用了调试器,所以它第一次显示匹配,后来又显示匹配以符合要求。它试图得到相同的结果(即再次尝试匹配,结果变为错误)。@RasikaKulkarni如果这回答了您的问题,请您将其标记为已接受(按投票按钮下方的勾号)?谢谢!