PRXPARSE REGEX在此测试数据步骤中未返回所有所需的匹配项
我正在调试一个更大、更复杂的正则表达式,通过构建一个小规模的正则表达式来理解我的问题在哪里更好,它的行为并不像预期的那样。这个测试正则表达式的目的是在我构建的测试数据集中检测不区分大小写的美国状态。代码如下:PRXPARSE REGEX在此测试数据步骤中未返回所有所需的匹配项,regex,sas,Regex,Sas,我正在调试一个更大、更复杂的正则表达式,通过构建一个小规模的正则表达式来理解我的问题在哪里更好,它的行为并不像预期的那样。这个测试正则表达式的目的是在我构建的测试数据集中检测不区分大小写的美国状态。代码如下: data countries; do i = 1 to 10; output; end; run; data countries; set countries; if i = 1 then state = 'CALIFORNIA'; if i = 2 then state = 'alab
data countries;
do i = 1 to 10;
output;
end;
run;
data countries;
set countries;
if i = 1 then state = 'CALIFORNIA';
if i = 2 then state = 'alabama';
if i = 3 then state = 'New York';
if i = 4 then state = 'OHIO';
if i = 5 then state = 'ohio';
if i = 6 then state = 'FLORIDA';
if i = 7 then state = 'georgia';
if i = 8 then state = 'TEXAS';
if i = 9 then state = 'Kansas';
if i = 10 then state = 'MAINE';
run;
data countries;
set countries;
prx_1 = (prxparse("/^(?i:california|new\s+york|maine)$/"));
prx_valid_addr_1 = (prxmatch(prx_1, compress(state))) ;
run;
我的问题是,它没有在我的数据中检测到纽约。在我看来,正则表达式对于该字符串是正确的。谁能告诉我我做错了什么
谢谢尝试使用
*
而不是+
。无参数压缩。然后,作为空间乘法器的+
而不是*
要求在该位置至少存在一个空间。因此,当compress删除空格时,匹配失败。尝试使用strip()
而不是compress()
和的文档
正如@kums在评论中指出的,compress()
[r] eturn从中删除指定字符的字符串
原始字符串
@vks你好,谢谢你的回复。不幸的是,这也没有起作用。但是您使用的正则表达式确实可以找到
加利福尼亚州和缅因州,对吗?压缩(州)
做什么?它能把他们连在一起吗?在这种情况下,删除^
和$
锚定。Doesprx_1=(prxparse(“/^(?i:california | new\s*york | maine)$/”)代码>工作?仅供参考:压缩
: