【问题标题】:Regex Capture betwee 2 Strings/Value2个字符串/值之间的正则表达式捕获
【发布时间】:2018-11-23 10:55:16
【问题描述】:

我想捕获 2 个字符串之间的值,我尝试了很多正则表达式但没有办法。

源代码:

</li><li><a href="/Journal/Year/123">Journal Title 2002</a> | <a href="/Journal/Year/456">2004</a> | <a href="/Journal/Year/789">2005</a></ul></div>

我试过的正则表达式:

(<li><a href=".journal.year.\d+">)(.*)(<a href=".journal.year.\d+">)
(?<=<li><a href=".journal.year.\d+">)(.*)(?=<a href=".journal.year.\d+">)

捕获输出:

Journal Title 2002

或(如果可能)

Journal Title 2002 2004 2005

我希望你能帮助我解决这个问题。 提前致谢。

【问题讨论】:

  • 可能因为您尝试使用正则表达式解析 HTML 内容而发生了反对票。虽然正则表达式可能是解决方案的一部分,但您应该考虑使用 HTML/XML 解析器。

标签: html regex notepad++


【解决方案1】:

不建议使用 RegEx 解析 HTML。

改为使用 DOM

var titles = [];
document.querySelectorAll("[href^='/Journal']").forEach(function(link) {
  titles.push(link.textContent.trim())
});
console.log(titles.join(" "));
&lt;ul&gt;&lt;li&gt;&lt;a href="/Journal/Year/123"&gt;Journal Title 2002&lt;/a&gt; | &lt;a href="/Journal/Year/456"&gt;2004&lt;/a&gt; | &lt;a href="/Journal/Year/789"&gt;2005&lt;/a&gt;&lt;/ul&gt;

【讨论】:

  • 感谢您的回复,我正在使用一个程序,解析只能使用 LR 字符串、Json、Regex 和 CSS 选择器
【解决方案2】:

https://regex101.com/r/IVUmJf/1

\>([^<|]+)\<

这个正则表达式应该适用于您的目的。它捕获&gt;&lt; 之间的所有内容,除非有|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多