首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reg Exp不选择多个组匹配(多个XOR)

Reg Exp不选择多个组匹配(多个XOR)
EN

Stack Overflow用户
提问于 2022-02-24 23:21:17
回答 1查看 123关注 0票数 1

数据保存在Oracle 12c数据库中,每个ICD-10-CM代码一行,带有类似的病人ID (外键)(请注意还有许多其他代码,以下就是与此问题相关的代码):

代码语言:javascript
复制
ID   ICD10CODE
 1   S72.91XB
 1   S72.92XB
 2   S72.211A
 3   S72.414A
 3   S72.415A
 4   S32.509A
 5   S32.301A
 5   S32.821A
 6   S32.421A
 6   S32.422A
 7   S32.421A
 8   S32.421A
 8   S32.509A

当前的任务是选择与匹配的不同患者(使用标准正则表达式语法),只匹配以下几点中的一个

  • 任意数量:S32\.1\w\w\wS32\.2\w\w\wS32\.3\w\w\wS32\.5\w\w\wS32\.6\w\w\wS32\.7\w\w\wS32\.8\w\w\w
  • 任意数量:S32\.4\w1\wS32\.4\w3\wS32\.4\w4\wS32\.4\w6\wS32\.4\w7\wS32\.4\w8\wS32\.4\w9\w
  • 任意数量:S32\.4\w2\wS32\.4\w3\wS32\.4\w5\wS32\.4\w6\wS32\.4\w7\wS32\.4\w8\wS32\.4\w9\w
  • 任意数量:S72\.[0-8]\w1\wS72\.[0-8]\w3\wS72\.[0-8]\w4\wS72\.[0-8]\w6\wS72\.[0-8]\w7\wS72\.[0-8]\w8\wS72\.[0-8]\w9\w
  • 任意数量:S72\.[0-8]\w2\wS72\.[0-8]\w3\wS72\.[0-8]\w5\wS72\.[0-8]\w6\wS72\.[0-8]\w7\wS72\.[0-8]\w8\wS72\.[0-8]\w9\w
  • 任意数量:S72\.91\w\wS72\.93\w\wS72\.94\w\wS72\.96\w\wS72\.97\w\wS72\.98\w\wS72\.99\w\w
  • 任意数量:S72\.92\w\wS72\.93\w\wS72\.95\w\wS72\.96\w\wS72\.97\w\wS72\.98\w\wS72\.99\w\w

在子弹中列出的代码的任何排列或组合(包括重复)对于每个病人都是允许的,但是排之间的排列或组合应该只发生在病人身上。我的方法是将LISTAGG应用于GROUP BY ID

代码语言:javascript
复制
ID  LISTAGG(ICD10CODE, ',')
 1  S72.91XB,S72.92XB
 2  S72.211A
 3  S72.414A,S72.415A
 4  S32.509A
 5  S32.301A,S32.821A
 6  S32.421A,S32.422A
 7  S32.421A
 8  S32.421A,S32.509A

然后使用这个正则表达式(S32\.(([1-3]|[5-8])|(4\w((1|4)|(2|5)|(3)|([5-9]))))\w+)|(S72\.(([0-8]\w((1|4)|(2|5)|(3)|([5-9])))|(9((1|4)|(2|5)|(3)|([5-9]))))\w+)进行筛选,它几乎是上面的符号的文字表示。我的表达方式来自于这个答案中的思想,似乎((RB\s+)+|(JJ\s+)+)会自动选择"RB""JJ",而不是两者兼而有之。

我不能让它起作用。答案应该只包含I 2、4、5和7。但是,我开发的表达式匹配所有I。

这个问题的解决办法是什么?

编辑更多信息:

以上S码均与下肢骨损伤有关:S32为骨盆骨折(髋骨),S72为股骨骨折(大腿骨)。注意,我们有两个股骨,和两个髋臼(股骨连接的骨盆窝)。S32.4代码表示髋臼( S32.[1235678]\w{3}系列的其余部分表示骨盆的其他部分)。右侧股骨和髋臼在第6个字符中分别用1|42|5表示,除非代码以S72.9开头,当这些数字出现在第5个字符时。

包括在研究人群中的病人只应该有一根骨头断了。这意味着,两个股骨之一,一个髋臼,或骨盆,但不是它们的组合。单一骨骨折的组合并不重要。例如,正确的单股可以在10个不同的地方和方式(膝盖面积,中轴,头部等,每一个产生不同的S72.\w[1|4]\w{2}代码),仍然应该被选择。

EN

回答 1

Stack Overflow用户

发布于 2022-02-25 18:16:05

好的,我把你的断骨代码添加到了S32和S72系列中。

这才是真正需要做的。

可以随意将,?更改为(,|$),但不要更改任何其他内容。

告诉我断骨密码是否正确。

  • S32\.\w[25]\w\w、S32.1\w\w、S32.2\w\w、S32.3\w\w\w、S32.5\w\w、S32.6\w\w\w、S32.7\w\w、S32.8 w\w\w)
  • S32\.\w[25]\w\w,S32.4\w1\w,S32.4\w3\w,S32.4\w4\w,S32.4\w6\w,S32.4\w7\w,S32.4\w8\w,S32.4\w9\w
  • S32\.\w[25]\w\w,S32.4\w2\w,S32.4\w3\w,S32.4\w5\w,S32.4\w6\w,S32.4\w7\w,S32.4\w8\w,S32.4\w9\w
  • S72\.\w[14]\w\w,S72.0-8 W1\w,S72.0-8 w3\w,S72.0-8 w4\w,S72.0-8 w6\w,S72.0-8 w7\w,S72.0-8 w8\w,S72.0-8 w9\w
  • S72\.\w[14]\w\w、S72.0w2\w、S72.0w3\w、S72.0w5、S72.0w6、S72.0w7、S72.08w8、S72.0w9
  • S72\.[14]\w\w\w,S72.91\w\w,S72.93\w\w,S72.94\w\w,S72.96\w\w,S72.97\w\w,S72.98\w\w,S72.99\w\w
  • S72\.[14]\w\w\w,S72.92\w\w,S72.93\w\w,S72.95\w\w,S72.96\w\w,S72.97\w\w,S72.98\w\w,S72.99\w\w

新的正则表达式是

代码语言:javascript
复制
^((S32\.(\w[25]|[1-35-8]\w)\w\w,?)+|(S32\.(\w[25]\w|4\w[1346-9])\w,?)+|(S32\.(\w[25]\w|4\w[235-9])\w,?)+|(S72\.(\w[14]\w|[0-8]\w[1346-9])\w,?)+|(S72\.(\w[14]\w|[0-8]\w[235-9])\w,?)+|(S72\.([14]\w|9[1346-9])\w\w,?)+|(S72\.([14]\w|9[235-9])\w\w,?)+)$

https://regex101.com/r/OAHdCO/1

代码语言:javascript
复制
 ^ 
 (
    ( S32 \. ( \w [25] | [1-35-8] \w ) \w\w ,? )+
  | ( S32 \. ( \w [25] \w | 4 \w [1346-9] ) \w ,? )+
  | ( S32 \. ( \w [25] \w | 4 \w [235-9] ) \w ,? )+
  | ( S72 \. ( \w [14] \w | [0-8] \w [1346-9] ) \w ,? )+
  | ( S72 \. ( \w [14] \w | [0-8] \w [235-9] ) \w ,? )+
  | ( S72 \. ( [14] \w | 9 [1346-9] ) \w\w ,? )+
  | ( S72 \. ( [14] \w | 9 [235-9] ) \w\w ,? )+
 )
 $
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71259357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档