如何使用正则表达式在每行的开始处允许空格?

问题描述:

我目前有一个验证表达式,它几乎按照我希望的方式工作,只有在某些行的开始处允许空格时才有问题。我想在行首开始支持无限空间。如何使用正则表达式在每行的开始处允许空格?

下面是一个例子,并且我有麻烦的表情: ^(?=.?[ \t]([., \t]))(?:[1-9][0-9](?:[ \t]\1[ \t][1-9][0-9])+[ \t]*\r?\n?)+$

这里的例子字符串我想匹配:

10 11 12 13 14 30 
9 41 42 44 46 48 
10 11 12 13 14 30 

我的第一个问题,这也解释了我希望具体做的是发现:here

+1

你可以添加到你的问题的示例串,你想匹配? –

+0

你的输入是否只是一个有数字和空格的字符串?你的正则表达式似乎太复杂了。 –

+0

不,我会接受多种分隔符类型:逗号,空格,制表符。 – justinpees

作为一个高级的主题,这将是一个有点难以理解,但在这里不用。

^\s*[1-9][0-9]*\s*(?=([., \t]))(?:\s*(?:\1|\r?\n)\s*[1-9][0-9]*)+\s*$

你有一个独特的问题,因为你正在试图验证所有行
一个字符串。
问题出现时,分隔符是而不是可用在
的末尾一排。

要解决这个问题,使用的交替与反向引用(分隔符)
一个换行符。

至于字符串开始处的空格,只需穿插\s

看到这里https://regex101.com/r/nir0uI/1这里https://regex101.com/r/nir0uI/2

格式化

^
\s* 
[1-9] [0-9]* 
\s* 
(?=        # Lookahead for delimiter. 
     ([., \t])     # (1) 
) 
(?: 
     \s* 
     (?: \1 | \r? \n) 
     \s*  
     [1-9] [0-9]* 
)+ 
\s* 
$ 
+0

非常感谢真正的天才!使用制表符作为此解决方案的分隔符会遇到任何问题吗? – justinpees

+1

哦,选项卡,空格,点或逗号将工作相同。 – sln

+0

另外,是否很难接受每行结尾处的分隔符?我发现空格可以添加到每行的末尾,所以我强调标签也可以工作。但是,每行结尾处的单个逗号(或空格逗号)和点(或空格 - 点)怎么样?取决于使用哪个分隔符。我知道这可能会让事情变得更复杂。告诉我,如果它太多了。 – justinpees

\s 

可能会帮助你EXPRES的开始锡永。

+0

我试过了,它似乎没有工作。你可以自己测试一下。是否因为我将空间设置为分隔符? – justinpees

+0

你究竟想要验证什么? – aanthraxx

添加零个或多个空白你的正则表达式的前面:

^\s*<your regex here>