当前位置: 首页 > 面试题库 >

golang regexp删除所有空白行

莘康裕
2023-03-14
问题内容

我想使用golangs regexp替换所有空白行和仅用空格/制表符填充的行。我以为下面的regexp应该可以解决问题, emptyLINE := regexp.MustCompile(^\s*$)
但令我惊讶的是,行首^和行尾$regexp标签不起作用。它们似乎表示整个字符串的开始/结束,而不仅仅是字符串中的一行,请参阅

https://play.golang.org/p/WZ4flVtDMN

我在这里想念什么吗?

编辑:

Wiktors的回答几乎使我到达了那里,但我仍然无法删除所有需要的行: https
//play.golang.org/p/1IpETpFKCU

问题答案:

您需要传递(?m)内联修饰符:

regexp.MustCompile(`(?m)^\s*$`) 
                    ^^^^

在MULTILINE修改将使^匹配的起始 线
$与之匹配的结束

m 多行模式^$匹配开始/结束线除了开始/结束文本(默认为false)

要记住的另一件事是\s匹配[\t\n\f\r ]符号。如果要匹配所有水平空白,可以使用[ \t][\t\p{Zs}]。这样一来,您就可以保持在边界内。

而另一件事:$只发出一个换行符后的位置,它不会消耗,所以,实际上你需要匹配\r\n\r\n$(如果你需要删除的换行符,太)。

这是我想出的(demo):

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`(?m)^\s*$[\r\n]*|[\r\n]+\s+\z`)
    in := ` 
      test


    test  
     `
    want_empty := `   test 
    test    `
    fmt.Printf("have [%v]\n", in)
    fmt.Printf("want [%v]\n", want_empty)
    fmt.Printf("got  [%v]\n", re.ReplaceAllString(in, ""))
}

^\s*$[\r\n]*-一个行的开始相匹配,任何0+空格,资产的线(的端部$),然后匹配0+ LF / CR符号。

[\r\n]+\s+\z备选的匹配1个或多个CR或LF符号,1+空格然后字符串的明确的结束\z,如果没有它,^\s*$[\r\n]*将不匹配的最后一个空行。



 类似资料:
  • 是否可以删除行开头的所有空白? 有时,当我复制和粘贴代码时,会混合使用制表符和空格,这会打乱我已有的间距格式。因此,如果有一种方法可以删除所有的起始空格,这样我就可以自己重新缩进它,那就太好了。

  • 我遇到了损坏的CSV问题,它在图像链接中有空白。 CSV文件由我的客户业务合作伙伴自动创建,约22000行。CSV中大约有30个链接被破坏,我无法修复。因为它每3小时更新一次。 所以,我试图想出一个自动的解决方案,但似乎没有任何效果。 问题在于图像链接,如以下链接:https://images.tyroo.de/GISLAVED_ULTRA_SPEED2�.jpg 它以前有空间。一些文件有3个空格

  • 问题内容: 我以为那不是难事,但我想用String.replaceAll删除所有空行(或Java中仅包含空白和制表符的行)。 我的正则表达式如下所示: 但这是行不通的。 我环顾四周,但仅发现用于删除空白行而不包含空格或制表符的正则表达式。 问题答案: 试试这个: 请注意,正则表达式匹配空格,制表符或管道字符! 编辑 顺便说一句,正则表达式也可以解决问题。

  • 为什么要删除第一个空格和后面的所有内容?如果执行并打印后,最初是,则只打印而不打印。 这是一个更大项目的一部分,但出于测试目的,我在一个新的java主文件上单独尝试了它,并且仍然执行相同的操作这是完整的程序:

  • 问题内容: 该被删除空行的第一个条件而已,我怎么会确保每个条件的脚本删除空行? 问题答案: 将以下条件放入第一个条件中,并使用语句检查它们,如下所示:

  • 我让用户提交一些文本(包括随机的html图像链接),然后我尝试从文本中的图像创建一个基本的BBCode[img][/img]标记。 我目前的测试方式如下: 字符串(取自随机论坛):