我需要一个正则表达式来解析一行
分隔数据的空格数为2或更多,列值可以是一个单词或由1个空格分隔的单词
e.g
输入:
01 Active/Active VXSM_T1E1 MAJOR NA NO REDUNDANCY
因此,这个的输出应该是:
01
Active/Active
VXSM_T1E1
MAJOR
NA
NO REDUNDANCY
输入:
01 Active/Active VXSM_T1E1 MAJOR NEXT NA NO REDUNDANCY ELEMENT
因此,这个的输出应该是:
01
Active/Active
VXSM_T1E1
MAJOR NEXT
NA
NO REDUNDANCY ELEMENT
我开始使用:(\ S + \ s \ s)|(\ S + \ s)+ 但无法解决我的所有问题
答案 0 :(得分:1)
您的尝试(\S+\s\s)|(\S+\s)+
与两种情况中的一种匹配,一个或多个字符后跟两个空格,或者一个或多个字符组,后跟一个空格。
如果您查看自己的要求,则需要将这两者合并为一个选项。您希望整个组后跟两个空格,并且您希望组包含单个空格。
(\S+\s)*\S+(\s\s|$)
匹配零个或多个字符组,后跟一个空格,后跟一个或多个字符,后跟两个空格或结束行。
这包括捕获中的尾随空格。如果这是不需要的,最终的捕获组应该是一个先行。