【问题标题】:Regex optional substring正则表达式可选子字符串
【发布时间】:2018-07-25 13:52:34
【问题描述】:

我很难为以下内容找到正确的正则表达式

我想要的:三场比赛(John Doe, , Jane Doe)

问题在于可选的锚标记,并且可能有空结果。

要搜索的字符串:

<td class="character">
  <a href=""> John Doe </a>

</td>
<td class="character">

</td>
<td class="character">
  Jane Doe 

</td>

到目前为止我的正则表达式: @&lt;td class="character"&gt;.*?(?:&lt;a.*?&gt;)?(.*?)(?:&lt;/a&gt;)?.*?&lt;/td&gt;@gms

链接到 regex101 https://regex101.com/r/9NRhjI/1

我知道您不应该使用正则表达式来解析 xml/html,但由于我只使用它来挖掘 html 的一小部分,它应该是可能的,对吧?

【问题讨论】:

  • 试试这个:&lt;td[^&gt;]+&gt;\s+(?:&lt;a[^&gt;]+&gt;)?\s+([^&lt;]+?)\s+(?:&lt;/a&gt;)?\s+&lt;/td&gt;。顺便说一句,你真的应该看看@Zenoo的评论
  • 非常感谢@Saud,这对我有用:)
  • @user2610665 当然可以。顺便说一句,我只是稍微改进了一下,如果你没有注意到的话

标签: regex pcre


【解决方案1】:

你可以使用这个简单的正则表达式:

@&lt;td[^&gt;]+&gt;\s+(?:&lt;a[^&gt;]+&gt;)?\s+([^&lt;]+?)\s+(?:&lt;/a&gt;)?\s+&lt;/td&gt;@gms

DEMO

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多