正则表达式里对前后查找进行回溯引用的有关问题

正则表达式里对前后查找进行回溯引用的问题?
本帖最后由 lewit 于 2014-06-10 17:40:34 编辑
原文本
灵枢经 Lingshu Jing; Miraculous Pivot
素问 Suwen; Plain Questions
黄帝内经 Huangdi Neijing; Inner Canon of Huangdi;Inner Canon of Yellow Emperor

要处理为:
灵枢经 Lingshu Jing
灵枢经 Miraculous Pivot
素问 Suwen
素问 Plain Questions
黄帝内经 Huangdi Neijing;
黄帝内经 Inner Canon of Huangdi
黄帝内经 Inner Canon of Yellow Emperor

正则表达式:([\x{2E80}-\x{9FFF}]+)\t([\w ']+)(;?)(?<=;)(['a-z -]*)(;?)(?<=;)(['a-z -]*)
 \1 \2
\1 \4
\1 \6
效果是:
灵枢经 Lingshu Jing
灵枢经 
灵枢经  Miraculous Pivot
素问 Suwen
素问 
素问  Plain Questions
黄帝内经 Huangdi Neijing
黄帝内经  Inner Canon of Huangdi
黄帝内经 Inner Canon of Yellow Emperor

请问:1. 为何是红色的“灵枢经”和“素问”这2行后没英文,我觉得应该是红色行有英文,而他们下面的行没有?
2. 如何改进表达式,让“灵枢经”和“素问” 后没有英文的2行(红色)不出现?

------解决方案--------------------
1. 估计\4是空白,所以"\1 \4"输出为"灵枢经 ".

2. 不管如何改进表达式,\4和\6总有一个要为"",由此产生的输出为"灵枢经 ". 所以你需要能有条件的产生输出,不知道powergrep是否支持.

还有一个办法是先产生不完美的输出,再处理一遍,过滤掉不完整的行.