正则表达式处理一段文本的算法问题
王宇伟 2014-12-15 02:40:17 输入一个句子”sssssssssss <p1 pair=1 > <p1 pair=2 > #P1# </p1> </p1> ssssssssssss <p2 pair=1 > #P2# </p2> sssssss <p2 pair=2 > #P3# </p2> sssss .”
句子中有三个实体,标识为#Pn#,共有3个组合:(P1,P2);(P1,P3);(P2,P3)
<p1 pair=1 > <p1 pair=2> #P1# </p1> </p1> 表示P1为pair1和pair2的第一个实体
<p2 pair=1 > #P2# </p2> 表示P2为pair1的第二个实体
<p2 pair=2 > #P3# </p2>表示P3为pair2的第二个实体
输出三个句子分别对应三个组合
1)P1与P2属于同一个pair,都是pair1,因此第一句输出:
+1 sssssssssss PROT1 ssssssssssss PROT2 sssssss #P3# sssss .
其中用PROT1替换#P1#,PROT2替换#P2#,因为属于同一pair,前面标+1,并去除句子中的所有标识信息,即<p1 pair=1>...</p1>这些信息;
2)同样P1与P3属于同一pair,第二句输出:
+1 sssssssssss PROT1 ssssssssssss #P2# sssssss PROT2 sssss .
PROT1,PROT2分别替换#P1#, #P3#,前面标+1;
3)P2与P3不属于同一组,第三句输出:
-1 sssssssssss #P1# ssssssssssss PROT1 sssssss PROT2 sssss .
不属于同一组前面标-1。
问题:利用正则表达式,如何识别标注信息,并设计算法实现这样的输入与输出