我想使用golangs regexp替换所有空白行和仅用空格/制表符填充的行。我以为下面的regexp应该可以解决问题, emptyLINE := regexp.MustCompile(
^\s*$)
但令我惊讶的是,行首^
和行尾$
regexp标签不起作用。它们似乎表示整个字符串的开始/结束,而不仅仅是字符串中的一行,请参阅
https://play.golang.org/p/WZ4flVtDMN
我在这里想念什么吗?
编辑:
您需要传递(?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]标记。 我目前的测试方式如下: 字符串(取自随机论坛):