0

我想获取所有字符,直到有一个大写字母,但从结尾到开头。(或从右到左)

blab blab 12 34 这是一个测试!

我需要This is a test!

这是我设法找到的:

^.*?(?=[A-Z])

但它返回blab blab 12 34

4

2 回答 2

2

使用以下正则表达式:

irb(main):001:0> regex = /([A-Z][^A-Z]*)$/
irb(main):002:0> "blab blab 12 34 This is a test!".match regex
=> #<MatchData "This is a test!" 1:"This is a test!">
于 2012-06-20T22:26:50.903 回答
1

好的,我将添加它作为答案,稍后可能会将其开发为其他变体。简单的解决方案应该是某事。像:

 [A-Z][^A-Z]*$

测试(在 Perl 中):

 print $1 if 'blab blab 12 34 This is a test!' =~ /([A-Z][^A-Z]*)$/;

返回:

 This is a test!

为了解决这个问题,需要将模式锚定$在字符串 ( )的末尾。

问候

rbo

于 2012-06-20T22:28:57.267 回答