可以在SAS中合并正则表达式查询吗?

时间:2019-01-30 19:51:56

标签: regex sas enterprise-guide

我已经在SAS的正则表达式代码中成功实现了否定的回溯。但是,有多个“单词”可能会否定我要查找的字符串。具体来说,我正在寻找一个短语(从医学笔记中得出),该短语表示“产生羧甲酰胺酶”或“证实为羧甲酰胺酶”,有时在这些短语之前可以加上“不产生羧甲酰胺酶”或“可能的羧甲酰胺酶的产生”,而我不会不想。了解到负面的回溯要求限定词(如果> 1)具有相同的长度,我需要创建2个单独的正则表达式来捕获“ not”和“ possible”,如:

*!!! Create template to identify key phrases in the comment/note;
retain carba1 carba2 carba3;
if _n_ = 1 then do;     /*probable*/
 carba1 = prxparse("/(?<!not\s)ca[bepr]\w*?\s*?(conf|posi|prod|\+)/i");
 carba2 = prxparse("/(?<!possible|probable\s)ca[bepr]\w*?\s*? 
 (conf|posi|prod|\+)/i");
 carba3 = prxparse("/(?<!not a\s)ca[bepr]\w*?\s*?(conf|posi|prod|\+)/i");
end;

if prxmatch(carba1,as_comments) > 0 or prxmatch(carba2,as_comments) > 0 or
prxmatch(carba3,as_comments) > 0;

这周围是否有字会缩短执行时间,还是我坚持这样做?任何建议/评论都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果只有4种情况,并且很简单。您可以通过包含和不包含来完成此操作。

public class ActivityA extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void demo() {
    // Do something    
  }
}

public class ActivityB extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActivityA activityA = new ActivityA();  // create object
    activityA.demo();  // 
  }
}