SAS如何在特定字符串之前提取单个字符串?

SAS如何在特定字符串之前提取单个字符串?,sas,Sas,我试图提取字符串前的数字n: 演示仪表板开始时间 我应该如何提取n 我试过了,但没有成功: id = scan(name, -1, "_START_TIME"); id = substr(name, index(name,"_START_TIME") - 1); 数字n必须在开始时间之前,而不仅仅是字符串中的一个数字。因此,不应使用compress()仅提取数字 谢谢你的意见 所以,现在是使用正则表达式的时候了 Pat = prxparse('/(\d+)_START_TIME/');

我试图提取字符串前的数字n:

演示仪表板开始时间

我应该如何提取n

我试过了,但没有成功:

  id = scan(name, -1, "_START_TIME");
  id = substr(name, index(name,"_START_TIME") - 1);
数字n必须在开始时间之前,而不仅仅是字符串中的一个数字。因此,不应使用compress()仅提取数字


谢谢你的意见

所以,现在是使用正则表达式的时候了

Pat = prxparse('/(\d+)_START_TIME/');
if prxmatch(Pat,) then ID = prxposn(Pat,1,Name);

所以,现在是使用正则表达式的时候了

Pat = prxparse('/(\d+)_START_TIME/');
if prxmatch(Pat,) then ID = prxposn(Pat,1,Name);

无法复制您的问题。您的第一次尝试在这里有效。它不应该-START_TIME将是完整的分隔符。因此,第一个代码示例适用于示例行,但如果有任何更改,则不适用。即如果单词为'n_START_TIME',则不会返回正确的结果。这取决于数据在某种程度上的变化程度,因此,如果您能够提供理想的样本数据。SCAN()将不起作用,因为列表中的每个元素现在都是分隔符。如果它总是在结尾,或者格式总是一样的,即u的数量,那么就很容易了。如果变量更大,就有问题。无法重现您的问题。您的第一次尝试在这里有效。它不应该-START_TIME将是完整的分隔符。因此,第一个代码示例适用于示例行,但如果有任何更改,则不适用。即如果单词为'n_START_TIME',则不会返回正确的结果。这取决于数据在某种程度上的变化程度,因此,如果您能够提供理想的样本数据。SCAN()将不起作用,因为列表中的每个元素现在都是分隔符。如果它总是在结尾,或者格式总是一样的,即u的数量,那么就很容易了。如果变量更大,那就有问题了。