正则表达式需要调整建议

时间:2011-09-29 09:14:06

标签: php regex

我有这个正则表达式,SO上的某些人帮我昨天。无论如何,我一直在编辑它现在做另一场比赛,几乎得到它。基本上在下面的文本中,我需要它来匹配一年前的空格,并将管道|附加到该匹配。我可以让它匹配,但它包括今年的第一个数字,我该怎么做只匹配空间。顺便说一下,这一年可能不仅仅是一个四位数的序列,它也可能是2206 & 20072004-2008,依此类推。

105| Ryan, T.N. 2005. |

$(?:[^|]+\|){1}(.*?)\.\s\d

2 个答案:

答案 0 :(得分:1)

如果我理解您的问题是正确的,您希望在|Ryan, T.N.之间添加2005.

试试这个正则表达式

^((?:[^|]+\|){1}.*?\.\s)(?=\d)

并替换为$1|

here on Regexr

(?=\d)是正向前瞻,它确保前方有一个数字而不匹配。

答案 1 :(得分:0)

如果我理解正确的话,这应该有效。

$string = preg_replace("#(.*) ([0-9]+.)#", "$1 | $2", "105| Ryan, T.N. 2005. |");