首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PRXMATCH不能在SAS中使用PRXPARSE函数

在 SAS 中,PRXMATCHPRXPARSE 是两个与正则表达式处理相关的函数,但它们的使用方式和目的有所不同。关于您提到的“PRXMATCH不能在SAS中使用PRXPARSE函数”的问题,以下是一些澄清和解释:

PRXPARSE 函数

PRXPARSE 函数用于解析一个正则表达式模式,并返回一个正则表达式标识符(pattern ID)。这个标识符可以在后续的正则表达式函数中重复使用,以提高效率,尤其是在需要多次使用相同模式的情况下。

语法示例:

代码语言:javascript
复制
pattern_id = PRXPARSE('/\d+/');

PRXMATCH 函数

PRXMATCH 函数用于在字符串中搜索匹配指定正则表达式的子字符串,并返回匹配的位置或相关信息。它可以直接接受一个正则表达式模式作为参数,也可以使用之前通过 PRXPARSE 解析得到的模式 ID。

语法示例(使用模式字符串):

代码语言:javascript
复制
position = PRXMATCH('/\d+/', 'abc123def');

语法示例(使用模式 ID):

代码语言:javascript
复制
pattern_id = PRXPARSE('/\d+/');
position = PRXMATCH(pattern_id, 'abc123def');

常见问题及解决方法

  1. 错误使用 PRXPARSE 返回值:
    • 确保在使用 PRXPARSE 后正确保存返回的模式 ID,并在 PRXMATCH 中正确引用它。
    • 示例:data _null_; pattern_id = PRXPARSE('/\d+/'); if PRXMATCH(pattern_id, 'abc123def') > 0 then put 'Match found!'; else put 'No match.'; run;
  2. 模式 ID 的生命周期:
    • PRXPARSE 返回的模式 ID 是临时的,仅在当前数据步骤中有效。如果需要在多个数据步骤中使用相同的模式,建议将其存储在宏变量或全局数据集中。
  3. 正则表达式语法错误:
    • 确保传递给 PRXPARSE 的正则表达式语法正确。例如,SAS 使用 /pattern/ 的形式来定义模式。
  4. 版本兼容性:
    • 确认您使用的 SAS 版本支持 PRXPARSEPRXMATCH 函数。这些函数在较新的 SAS 版本中得到良好支持,但在非常旧的版本中可能不完全兼容。

示例代码

以下是一个完整的示例,展示如何使用 PRXPARSEPRXMATCH 函数:

代码语言:javascript
复制
data example;
  text = 'Order number 12345 is confirmed.';
  
  /* 解析正则表达式模式 */
  pattern_id = PRXPARSE('/\d+/');
  
  /* 使用 PRXMATCH 查找匹配 */
  if PRXMATCH(pattern_id, text) > 0 then do;
    matched_text = PRXSUBSTR(text, pattern_id, 1);
    output;
  end;
  
  /* 释放模式 ID */
  call PRXFREE(pattern_id);
run;

/* 输出结果 */
/* 
   text                              | matched_text
------------------------------------+--------------
Order number 12345 is confirmed.    | 12345
*/

总结

  • PRXPARSE 用于解析正则表达式模式并返回一个模式 ID。
  • PRXMATCH 可以直接使用模式字符串或之前解析得到的模式 ID 进行匹配。
  • 确保正确管理模式 ID 的生命周期,并验证正则表达式的语法正确性。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

正则表达式的“阿赖耶识”| 【SAS Says·扩展篇】正则表达式

---- 【SAS Says·扩展篇】正则表达式的“阿赖耶识” | 2. PRXPARSE () 0.前集回顾 1.初识PRXPARSE() 2.例子 ---- 0....本集要介绍的PRXPARSE函数,可以将不论多长的表达式储存起来,方便引用。...又要改3下,就非常麻烦,利用PRXPARSE函数,将正则表达式储存在一个pattern-id中,就可以减少这种重复,每次只需要改一次。 1....初识PRXPARSE() 这个函数用来获取某种正则表达式,并存在pattern-id中,方便其他函数来用,它的格式为: PRXMATCH (regular-expression) 以上面那个为例: data_null...无论是要提取1192、11923还是11924,都只要改一次就好了,这个函数很简单。现在我们看一下上一集初级分析师小王的例子中,如果用PRXPARSE函数该如何写代码。 2.

91430
  • 移形换影 | 【SAS Says · 扩展篇】

    使用; match =PRXMATCH(pattern, name); if length GT 0thendo; *得到产品整个ID; id=substr(name,start,length...别担心,小王用PRXCHANGES()函数, 移形换影把位置就给换了过来。 2....初识PRXCHANGES() 这个函数有两个作用: 1)任意字符的替换; 2)可以帮我们自由的对一段话进行重新组合,也就是我们本集要解决的问题。 前提是一定要配合PRXPARSE使用。...正则表达式中开头多了一个s字母,它用来指定进行替换或者重排,在”//”两个斜杠之间,还有一个斜杠/(标注为红色),它表示:斜杠左边为被替换的部分,斜杠右边为替换后的字符,本例中也就是要将“shushuo...当然,也可以不生成新的字符new_string,只在原字符中进行替换修改,如: pattern=PRXPARSE(“s/shushuo/shuaishuai/”) PRXCHANGES(pattern,

    923110

    5. call PRXCHANGE() | 移形换影

    使用; match =PRXMATCH(pattern, name); if length GT 0thendo; *得到产品整个ID; id=substr(name,start,length...别担心,小王用PRXCHANGES()函数, 移形换影把位置就给换了过来。 2....初识PRXCHANGES() 这个函数有两个作用: 1)任意字符的替换; 2)可以帮我们自由的对一段话进行重新组合,也就是我们本集要解决的问题。 前提是一定要配合PRXPARSE使用。...正则表达式中开头多了一个s字母,它用来指定进行替换或者重排,在”//”两个斜杠之间,还有一个斜杠/(标注为红色),它表示:斜杠左边为被替换的部分,斜杠右边为替换后的字符,本例中也就是要将“shushuo...当然,也可以不生成新的字符new_string,只在原字符中进行替换修改,如: pattern=PRXPARSE(“s/shushuo/shuaishuai/”) PRXCHANGES(pattern,

    1.1K50

    | 【SAS Says·扩展篇】正则表达式

    这些看起来像乱码的东西就是正则表达式和元字符,下面,我们就从一个函数PRXMATCH()来入手,学习一下如何使用正则表达式。 1....初识PRXMATCH() 这个函数用来定义一段字符在一句话中的位置,它的格式为: PRXMATCH ( pattern-id or regular-expression, string ) pattern-id...大家先别管,这个函数的作用就是:看regular-expression 在 string 中的位置。...解释: 1)注意$和i的使用位置:”/jun$/”和”/jun/i”,一个在斜杠里,一个在外。 2)a和b中,只有a返回了jun的位置,因为string1中,jun在末尾。...2.3 metacharater总结 我们给出一些metacharater总结,供以后使用的时候查询: 正则表达式String返回不匹配(返回0)/jun/“Shushuo jun”9“Shushuo

    1.7K70

    PRXMATCH () | 提取文本数据,分析师小王初上手!

    这些看起来像乱码的东西就是正则表达式和元字符,下面,我们就从一个函数PRXMATCH()来入手,学习一下如何使用正则表达式。 1....初识PRXMATCH() 这个函数用来定义一段字符在一句话中的位置,它的格式为: PRXMATCH ( pattern-id or regular-expression, string ) pattern-id...大家先别管,这个函数的作用就是:看regular-expression 在 string 中的位置。...2)a和b中,只有a返回了jun的位置,因为string1中,jun在末尾。 3)c和d中,只有c返回了,因为JUN是大写,必须用i符号,表示不区分大小写。...2.3 metacharater总结 我们给出一些metacharater总结,供以后使用的时候查询: 正则表达式String返回不匹配(返回0)/jun/“Shushuo jun”9“Shushuo

    3.8K71

    SAS-爬取帖子下的邮箱,给他们发一封邮件...

    于是关于“SAS爬虫”这篇文章诞生了...(我知道的仅仅是一点皮毛,但也不妨我用SAS获取了一堆邮箱....)其实不太知道这算不算爬虫,姑且叫爬......原理 SAS中获取网页上信息的原理其实很简单,就是将网页上的html代码给导入进数据集中,然后利用一定规律来获取自己想要的提取的信息......小编用的不溜,就先不细说了......,[a-zA-Z]中的任意字符,而且还可以是包含[-_.]特殊字符的字符串,长度也不固定,这样,我们就可以基本确定了邮箱的规律,那么就需要用语言告诉程序,我们的规律是什么...接下来就看看程序是写的.....拼凑 Macro其实就是将多个零件进行组装实现某个功能,那么知道了前面的原理和各个知识点,就可以将其组装到一起,在后面的使用过程中不断优化从而形成一个比较好的宏...那么就来看看此处的组装...

    73530

    React useEffect中使用事件监听在回调函数中state不更新的问题

    很多React开发者都遇到过useEffect中使用事件监听在回调函数中获取到旧的state值的问题,也都知道如何去解决。...state值控制台打印结果如下图片手动实现的简易useEffect中,事件监听回调函数中也会有获取不到state最新值的问题下面根据上面React代码模拟为常规的js代码let obj; // 模拟btn...App纯函数组件每次state变化,React 函数会重新执行,所以我们可以进行如下模拟操作图片这个示例的运行过程就比较好理解,第一次执行App函数,初始化数据,Obj可以获取到函数内的a变量,因此,变量...在React函数中也是一样的情况,某一个对象的监听事件的回调函数,这个对象相当于全局作用域变量(或者与函数同一层作用域链),在回调函数中获取到的state值,为第一次运行时的内存中的state值。...而组件函数内的普通函数,每次运行组件函数中,普通函数与state的作用域链为同一层,所以会拿到最新的state值。

    11K60

    SAS进阶《深入解析SAS》之开发多语言支持的SAS程序

    语言切换选项 从SAS9.3开始,引入了语言切换(Language Switching)选项,并且在SAS9.4中得到了增强。 7....FORMAT自定义格式,还可以通过指定选项LOCALE来定义只能在指定的Locale下可用的格式。...字符串和字符处理函数 SAS提供了字符串函数和CALL例程,以使用户能够很容易地处理字符数据。K函数。...K函数使用以字符为基础的偏移长度,可用于处理SBCS、DBCS、MBCS(UTF-8)数据,使用K函数更加符合语言处理习惯,而且不需要知道每个字符存储为多少个字节。 10....文本字符串外部化 为了使同一个SAS程序能支持多种语言,需要将代码中的文本字符串提取出来,并在需要使用该字符串的地方使用其通用的表示方式,该过程称为字符串外部化(String Externalizatin

    2K90
    领券