Stata正则表达式提取数值

Stata Regular expressions extracting numerical values

我有一些数据看起来像这样

var1
h 01 .00 .0 abc
d 1.0 .0 14.0abc
1,0.0 0.0 .0abc

需要注意的是,最后三个alpha值是相同的,我希望提取字符串中的所有数值。我使用的代码如下所示

gen x1=regexs(1) if regexm(var1,"([0-9]+) [ ]*(abc)*$")

但是,此代码仅提取 abc 项之前的数字,并在 space 或 . 之后停止。比如只提取第一项abc前的0。我想知道是否有办法处理这个问题并提取字母字符之前的所有数值。

正如@Roberto Ferrer 指出的那样,您的问题不是很清楚,但这里有一个使用来自 SSC 的 moss 的示例:

. clear 

. input str16 var1

                var1
1. "h 01 .00 .0 abc"
2. "d 1.0 .0 14.0abc"
3. "1,0.0 0.0 .0abc"
4. end 

. moss var1, regex match("([0-9]+\.*[0-9]*|\.[0-9]+)") 

. l _match*

   +---------------------------------------+
   | _match1   _match2   _match3   _match4 |
   |---------------------------------------|
1. |      01       .00        .0           |
2. |     1.0        .0      14.0           |
3. |       1       0.0       0.0        .0 |
   +---------------------------------------+