需要更多正则表达式调整建议

时间:2011-09-29 10:01:47

标签: php regex pattern-matching expression

我正在通过SO的帮助将分隔符添加到大型参考文件中。现在差不多了。我有一个我从SO成员那里收到的正则表达式,它允许我添加“|”作者和年份之间。我知道需要添加“|”文章和出版物之间。我想到的规则是我要添加“|”在发布名称中“:”之前的最后一个句点(点)之后。我尝试编辑我的积极向前看,但它似乎不起作用。我将一如既往地感谢您对此的投入。提前谢谢。

其实我甚至不需要指定3后“|”规则。主要的是匹配“:”之前的最后一个时期。那是对的吗?即便如此,我的正则表达似乎也没有起作用。

^((?:[^|]+\|){3}.*?\.)(?=\:)

122| Ryan, T.N. |2002. |Some article name here. Publication name 2: 101-105.

1 个答案:

答案 0 :(得分:0)

好的2个问题:

  • 你忘记了这个时期和结肠之间的东西! :)
  • 在此期间之前您没有贪婪的匹配,因此它匹配第一个期间而非最后一个

尝试:

'^((?:[^|]+\|){3}.*\.)(?=[^:]*?\:)'

看到区别? (删除了?,添加了[^:]*