需要一个正则表达式来匹配字母后跟数字或大写字母

时间:2011-01-19 10:59:22

标签: php regex

我需要一个正则表达式,可以用换行符替换小写字母n,但只有在后跟数字0-9或大写字母时才会替换。

例如,字符串:
Company Buildingn100 Prospect Way

应转换为:
Company Building
100 Prospect Way

我正在尝试在PHP中清理这些数据,因此生成的表达式需要兼容。

2 个答案:

答案 0 :(得分:4)

试试这个:

n(?=[\dA-Z])

在PHP中(working example):

$str = preg_replace("/n(?=[\dA-Z])/", "\n", $str);

(?=...)是一个积极的先行 - 它会检查我们匹配的n之后的内容,但不匹配,所以下一个字符不会被替换。

答案 1 :(得分:3)

$result = preg_replace("/n(?=[\dA-Z])/", "\n", $subject);

如果用大写字母表示ASCII字母,则会执行此操作。

$result = preg_replace("/n(?=[\d\p{Lu}])/u", "\n", $subject);

如果您使用的是Unicode。