SAS 在正则表达式中使用 $

SAS Using $ in Regex

我有一大堆 ID,如果它以斜杠和一位或两位数字结尾,我想标记它们。 (/00, /01, /0)

有些 ID 在中间包含斜线,我不想标记。

所以我希望我的结果是:

ID                Flag
P-MTP00197854/03    X
P-MTP00197868/02    X
P-MTP00197882/00    X
P-HMF00197730   
WI/B09/077094   
Q-MTP00197735   
Q-HMF00199313/0     X

我希望这个函数能够完成这项工作,但它没有检测到任何东西:

if prxmatch("/\/\d{1,2}$/", ID) then Flag='X';

如果我删除 $ 符号,它会检测到我想要的内容,但它还包括那些中间带有斜杠的 ID,因为它不是从末尾开始的。

我已经在 regex101 上对其进行了测试,它应该可以工作。我在这里遗漏了什么吗?

为防止部分匹配,您可以使用单词边界。为确保右侧不再有 /,您可以使用正前瞻断言右侧不再出现 /

\/\d{1,2}\b(?=[^\r\n\/]*$)

看到一个regex demo

或者反之使用负前瞻,断言右侧没有 /

\/\d{1,2}\b(?![^\/\r\n]\/)

再看一个regex demo