我有这个正则表达式,SO上的某些人帮我昨天。无论如何,我一直在编辑它现在做另一场比赛,几乎得到它。基本上在下面的文本中,我需要它来匹配一年前的空格,并将管道|
附加到该匹配。我可以让它匹配,但它包括今年的第一个数字,我该怎么做只匹配空间。顺便说一下,这一年可能不仅仅是一个四位数的序列,它也可能是2206 & 2007
或2004-2008
,依此类推。
105| Ryan, T.N. 2005. |
$(?:[^|]+\|){1}(.*?)\.\s\d
答案 0 :(得分:1)
如果我理解您的问题是正确的,您希望在|
和Ryan, T.N.
之间添加2005.
。
试试这个正则表达式
^((?:[^|]+\|){1}.*?\.\s)(?=\d)
并替换为$1
和|
(?=\d)
是正向前瞻,它确保前方有一个数字而不匹配。
答案 1 :(得分:0)
如果我理解正确的话,这应该有效。
$string = preg_replace("#(.*) ([0-9]+.)#", "$1 | $2", "105| Ryan, T.N. 2005. |");