RegEx用于字符串中N个空格

时间:2019-04-14 00:02:00

标签: regex regex-lookarounds regex-group spaces regex-greedy

我正在寻找创建由4个空格分隔的组 问题是,如果该组包含除4个空格分隔符之外的任何空格,则与到目前为止我尝试过的正则表达式不匹配

这是我尝试过的。 假设我有这两行,单词之间有4个空格

word 1    word 2
word1    word2

正则表达式为

^([^ {4}]*) {4}([^ {4}]*)$

这仅匹配第二行。除了4个空格分隔符以外的任何其他空格都将与该行不匹配。

我希望这两行都匹配并找到正确的组。

3 个答案:

答案 0 :(得分:1)

经过一些实验并基于这里的建议,我给了我们This RegEx

^(.*?)    (.*?)    (.*?)$

enter image description here

表面上它满足了我的需求。最后一行在末尾有4个空格,但这不应该发生。我看不到任何陷阱吗?

答案 1 :(得分:1)

您可以指定要匹配的字符,而不是使用非贪婪的点星.*?方法。

如果您的数据仅包含例如单词,则可以匹配1+个单词字符\w+,后跟一个重复模式(\w+(?: \w+)*)以匹配一个空格,再匹配1+个单词字符,然后再匹配4个空格。 / p>

请注意,如果要比单词字符更多匹配,可以使用character class并添加允许匹配的字符。

^(\w+(?: \w+)*) {4}(\w+(?: \w+)*) {4}(\w+(?: \w+)*)$

Regex demo

答案 2 :(得分:0)

This RegEx可能会帮助您将输入字符串分为五个组,其中第二和第四组是四个空格:

([a-zA-Z0-9_ ]*)(\s{4})([a-zA-Z0-9_ ]*)(\s{4})([a-zA-Z0-9_ ]*)    

enter image description here

如果您的列中可能没有空格,则可以使用this RegEx对其进行简化:

(\w+)(\s{4})(\w+)(\s{4})(\w+)

enter image description here