PHP中的正则表达式从驼峰大小写中查找最后一个大写字符


Regex in PHP to find last upcase char from the Camel Case

我想在PHP中匹配字符串中最后一个大写字符(http://php.net/manual/en/function.ucfirst.php)。

为了增加复杂性,我想忽略不同字符串后面的所有内容,例如,未大写或驼峰大小写风格的大写字母序列。

下面是一些应该和不应该匹配的例子

匹配:

Foobar => Expected char: F
fooBar  => Expected char: B
A_fooBar  => Expected char: B
fooBAR => Expected char: B (Most complicated situation)

不匹配:

foo A_bar
foobar
foo bar foo bar
foobar /* Comment */
到目前为止,我已经尝试了以下regex:
(?!A_)[A-Z](?!((?!/'*).)*'*/)

但运气不好。Regexp匹配任何大写字符,除了一个特定的字符串(非常类似的情况)

@edit

和另一个正则表达式

/([A-Z])[^A-Z'W]*$/
http://phpfiddle.org/main/code/dyq-3h7

我相信这将匹配适当的地方,并且也将忽略您的其他示例。

^'w*?(?<![A-Z_])([A-Z])(?!_)

看这个

如果我理解对了,你基本上想要最后一个大写字母,前面没有另一个大写字母。在这种情况下,试试这个:

/.*(?<![A-Z])([A-Z])/

try this

/([A-Z])([A-Za-z]|[^_'*'/])*$/

这适用于你的每个例子:

http://phpfiddle.org/main/code/sgb-7m