【问题标题】:Atom Editor - Wrapping text with tags using regexAtom 编辑器 - 使用正则表达式用标签包装文本
【发布时间】:2019-09-21 03:01:38
【问题描述】:

在 Atom 中,我正在处理一个巨大的文本文件,我必须用 <li> </li> 包装所有文本行。

例如:

ELECTRICAL PRODUCTS

<li>ELECTRICAL PRODUCTS</li>

谢谢!

【问题讨论】:

  • 这里有什么问题?看起来很简单。只需使用(.*) 捕获每一行并将其替换为&lt;li&gt;$1&lt;/li&gt;&lt;li&gt;\1&lt;/li&gt;,就像您的编辑器支持的那样。那是你需要的吗?如果没有,请mcve
  • 当我用 (.*) 找到并用
  • $1
  • 替换时,电气产品变成:
  • 电气产品
  • 看起来您的数据也有空行,因为它也匹配空行并为您提供这种输出。让我添加它作为答案以清楚地解释。
  • 已添加为答案,请查看。尽管您的问题似乎已经解决,因为您已经接受了答案。但是看看它是否对你有帮助。
  • 标签: regex atom-editor


    【解决方案1】:

    看起来您的文本文件有空行,这很正常。要不将空行转换为&lt;li&gt;&lt;/li&gt; 形式,您需要使用与纯空行或仅包含空格的行不匹配的正则表达式,因为在&lt;li&gt; 标记中仅替换空格是没有用的。您可以更好地使用此正则表达式来匹配非空行。

    (\S+(?: +\S+)*)
    

    将整行分组到 group1 中,然后将其替换为 &lt;li&gt;$1&lt;/li&gt;

    Regex Demo

    如您所见,空行保持不变,所有非空行都被替换为&lt;li&gt; 标签。

    希望这对您有用。如果有任何问题,请告诉我。

    【讨论】:

      【解决方案2】:

      考虑以下示例数据..

      a1sd
      1fasd
      1fsa
      f1sa
      f1as
      df1
      saf1a
      sa1
      sa
      

      您需要做的就是找到 txt 文件中使用的分隔符。假设它是换行符,然后找到 \n 并将其替换为 &lt;/li&gt;\n&lt;li&gt;..(可能是 \n 或 \r 或 \ r\n)

      那么输出将是

      a1sd</li>
      <li>1fasd</li>
      <li>1fsa</li>
      <li>f1sa</li>
      <li>f1as</li>
      <li>df1</li>
      <li>saf1a</li>
      <li>sd1fsf</li>
      <li>d1f</li>
      <li>sa1</li>
      <li>sa
      

      您可以在文件的开头和结尾手动添加。

      <li>a1sd</li>
      <li>1fasd</li>
      <li>1fsa</li>
      <li>f1sa</li>
      <li>f1as</li>
      <li>df1</li>
      <li>saf1a</li>
      <li>sd1fsf</li>
      <li>d1f</li>
      <li>sa1</li>
      <li>sa</li>
      

      【讨论】:

        【解决方案3】:

        使用以下正则表达式模式对内容进行分组和替换:

        string li_pattern = @"(?:w+])*+(?<li>[\s\S]*?[;.\n])";
        var res = Regex.Replace(text, li_pattern, @"<li>${li}</li>");
        

        [https://regex101.com/r/kJFzQr/1][1]

        【讨论】:

          猜你喜欢
          相关资源
          最近更新 更多
          热门标签