/* * 关系数据语法说明: * 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹 * 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列 */ // 关系链缩写规则 export default [ /* 年龄 */ {//有大有小,增加不确定性 exp:/^(.+)&o([^#]+)&l/g, str:'$1$2' }, {//有大有小,增加不确定性 exp:/^(.+)&l([^#]+)&o/g, str:'$1$2' }, {//有大有小,增加不确定性 exp:/^(.+)?,o([sb](&\d+)?)([^#]+)&l/g, str:'$1,x$2$4' }, {//有大有小,增加不确定性 exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g, str:'$1,x$2$4' }, /* 兄弟姐妹 */ {//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断) exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/, str:'$3$4' }, {//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断) exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/, str:'$3$4' }, {//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己 exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/, str:'$1,xb$4#$1$4' }, {//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己 exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/, str:'$1,xs$4#$1$4' }, {//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹 exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g, str:'$1,xs' }, {//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟 exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g, str:'$1,xb' }, {//不知道性别,兄弟姐妹的兄弟是兄弟或自己 exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/, str:',xb$2#$2' }, {//不知道性别,兄弟姐妹的姐妹是姐妹或自己 exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/, str:',xs$2#$2' }, {//将复合称谓拆分 exp:/^,x([sb])$/, str:',o$1#,l$1' }, /* 父母 */ {//母亲的丈夫是自己的父亲 exp:/m,h/g, str:'f' }, {//父亲的妻子是自己的母亲 exp:/f,w/g, str:'m' }, {//兄弟的父母就是自己的父母 exp:/,[xol][sb](&\d+)?(,[mf])/g, str:'$2' }, /* 父母的子女 */ {//父母的女儿排序判断姐妹的排序 exp:/,[mf],d(&\d+)/, str:',xs$1' }, {//父母的女儿年龄判断是姐姐还是妹妹 exp:/,[mf],d&([ol])/, str:',$1s' }, {//父母的儿子排序判断兄弟的排序 exp:/,[mf],s(&\d+)/, str:',xb$1' }, {//父母的儿子年龄判断是哥哥还是弟弟 exp:/,[mf],s&([ol])/, str:',$1b' }, {//如果自己是男性,父母的儿子是兄弟或者自己 exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/, str:'$1,xb$3#$1$3' }, {//如果自己是女性,父母的女儿是姐妹或者自己 exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/, str:'$1,xs$3#$1$3' }, {//如果自己是女性,父母的儿子是自己的兄弟 exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/, str:'$1,xb' }, {//如果自己是男性,父母的女儿是自己的姐妹 exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/, str:'$1,xs' }, {//父母的儿子是兄弟或自己 exp:/^,[mf],s(.+)?$/, str:',xb$1#,1$1' }, {//父母的女儿是姐妹或者自己 exp:/^,[mf],d(.+)?$/, str:',xs$1#,0$1' }, /* 孩子 */ {//孩子的兄弟是自己的儿子(排序判断) exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g, str:',s$2' }, {//孩子的姐妹是自己的女儿(排序判断) exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g, str:',d$2' }, {//孩子的兄弟是自己的儿子(年龄判断) exp:/,[ds]&o,ob/g, str:',s&o' }, {//孩子的姐妹是自己的女儿(年龄判断) exp:/,[ds]&o,os/g, str:',d&o' }, {//孩子的兄弟是自己的儿子(年龄判断) exp:/,[ds]&l,lb/g, str:',s&l' }, {//孩子的姐妹是自己的女儿(年龄判断) exp:/,[ds]&l,ls/g, str:',d&l' }, {//孩子的姐妹是自己的女儿 exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)?/g, str:',d$2' }, {//孩子的兄弟是自己的儿子 exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g, str:',s$2' }, /* 夫妻 */ {//自己是女性,女儿或儿子的妈妈是自己 exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g, str:'$1' }, {//自己是女性,女儿或儿子的爸爸是自己的丈夫 exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g, str:'$1,h' }, {//自己是男性,女儿或儿子的爸爸是自己 exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g, str:'$1' }, {//自己是男性,女儿或儿子的妈妈是自己的妻子 exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g, str:'$1,w' }, {//不知道性别,子女的妈妈是妻子或自己 exp:/^,[ds],m(.+)?$/, str:',w$1#$1' }, {//不知道性别,子女的爸爸是丈夫或自己 exp:/^,[ds],f(.+)?$/, str:',h$1#$1' }, {//夫妻的孩子就是自己的孩子 exp:/,[wh](,[ds])/g, str:'$1' }, {//夫妻的对方是自己 exp:/,w,h|,h,w/g, str:'' }, {//并列关系处理1 X[A|B|C]Y = XAY#X[B|C]Y exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g, str:'$1$2$4#$1[$3]$4' }, {//并列关系处理2 X[A|B]Y = XAY#XBY exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g, str:'$1$2$4#$1$3$4' } ];