pers regexp with sas - 完全匹配一个或另一个

时间:2013-06-12 10:12:32

标签: regex perl sas

我需要提取用文字或文字中的数字书写的数字。

我有一张看起来像这样的表,

... 1 child ...
... three children ... 
...four children ...    
...2 children...
...five children

我想要捕获用文字或数字字母书写的数字。每行有一个数字。所以期望的输出是:

1
three
four
2
five

我的正则表达式看起来像这样:

prxparse("/one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|child|\d\d?/")

任何帮助?

1 个答案:

答案 0 :(得分:6)

描述

此正则表达式将匹配字符串中的数字,前提是数字由空格或符号包围。

(?<=\s|^)(?:[0-9]+|one|two|three|four|five|six|seven|eight|nine|ten)(?=\s|$)

enter image description here

直播示例:http://www.rubular.com/r/6ua7fTb8IS

要包含十分之一的拼写单词版本的数字,您需要包含这些数字。这个正则表达式将捕获从0到100的数字[禁止任何拼写错误]

(?<=\s|^)(?:[0-9]+|(?:(?:twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety)\s)?(?:one(?:[\s-]hundred)?|two|three|four|five|six|seven|eight|nine)|ten|eleven|twelve|(?:thir|four|fif|six|seven|eight|nine)teen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|zero)(?=\s|$)

enter image description here

直播示例:http://www.rubular.com/r/EIa18nx731

Perl示例

 $string = <<END;
 ... 1 child ...
 ... three children ... 
 ... four children ...    
 ... 2 children...
 ... five children
END
@matches = $string =~ m/(?<=\s|^)[0-9]+|one|two|three|four|five|six|seven|eight|nine|ten(?=\s|$)/gi;
    print join("\n", @matches);

产量

1
three
four
2
five