Regex 用于空格之间的值的正则表达式

Regex 用于空格之间的值的正则表达式,regex,Regex,我不熟悉正则表达式,很难获得介于空格之间的值 我正在尝试使用regex从下面的sameple数据中获取值“field1”“abc/def try” 目前,我正在使用(^.{18}\s+跳过前18个字符,但我不知道如何用空格抓取值 A1234567890 field 1 abc/def try 02021051812 12 test test 12 pass 3333G132021 no test test ca

我不熟悉正则表达式,很难获得介于空格之间的值

我正在尝试使用regex从下面的sameple数据中获取值“field1”“abc/def try”

目前,我正在使用
(^.{18}\s+
跳过前18个字符,但我不知道如何用空格抓取值

A1234567890        field 1        abc/def try 
02021051812        12 test        test 12 pass
3333G132021        no test        test cancel

任何帮助/指针都将不胜感激。

如果此文本具有固定宽度的列,您可以匹配和修剪列值,知道字符串开头和列文本之间的字符数

例如,此正则表达式适用于您发布的文本:


^(.*?)\s*(?由于不知道数据是否总是相同的长度,我创建了以下内容,这将为您提供可能要使用的每列的组:

^((\s{0,1}\S{1,})*)(\s{2,})((\s{0,1}\S{1,})*)(\s{2,})((\s{0,1}\S{1,})*)

您需要能够定义如何区分这两种空格。例如,它总是“恰好一个空格与多个空格”,还是“制表符与空格”,或者“在下一列之前一定数量的字符(包括空格)”?如果没有这样的规则,恐怕你无法解决这个问题。这取决于数据在这里使用的最佳方式。如果你知道这些值只包含单个空格,你可以使用
^(\S+)(\S+)(\S+)+(\S+)+(\S+)(\S+(?:\S+)
,请参见。从外观上看,你的数据字段是固定长度的。我会根据这些长度拆分行(如
^(.{18})(.{15})(.*)
),然后从匹配组的右侧修剪不需要的空格。如果您知道是谁造成了这种糟糕的数据传递,您应该要求他们对其进行增强,使其具有机器可读性(JSON、XML等)@WiktorStribiżew感谢您的帮助,考虑到非固定长度的可能性,这是最有效的!