【问题标题】:Regex to select only specific characters between two strings正则表达式仅选择两个字符串之间的特定字符
【发布时间】:2019-11-25 16:35:18
【问题描述】:

我有以下 HTML:

<i>This is my first sentence.        

This is my second sentence.</i>

使用正则表达式(在 SublimeText 中仅供参考)如何仅选择两个 &lt;i&gt;&lt;/i&gt; 括号之间的空格(包括换行符)?

我已经到了可以选择所有字符的地步,但是如何将其限制为仅空格和换行符?:

(?<=<i.).*?(?=</i>)

https://regex101.com/r/eZ1gT7/1986

【问题讨论】:

  • 一个正则表达式只能匹配一个连续的子串,它不能匹配未连接的子串。

标签: regex


【解决方案1】:

您必须遍历捕获的第 2 组: (&lt;i[^&gt;]+?&gt;)?([ \n]*)(&lt;\/i&gt;)?

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

【讨论】:

    【解决方案2】:

    你不能用单个正则表达式来做,你可以使用正则表达式的组合

    1. &lt;\s*i[^&gt;]+&gt;([\s\S]+?)&lt;\s*\/\s*i\s*&gt;

    Demo

    这将为您提供标签 &lt;i&gt; 之间的值,标签之间的文本在 captured group 1 中可用,现在您可以遍历匹配的值并查找任何 space 字符

    1. \s+

    【讨论】:

      【解决方案3】:

      我猜可能是这个表情,

      (?=\s*[\n\r])(\s*)(?=\S)
      

      替换为单个空格 () 可能接近您的想法。


      表达式在this demo 的右上方面板中进行了解释,如果您想探索/简化/修改它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多