Regex 正则表达式:如何从字符串末尾开始查找

Regex 正则表达式:如何从字符串末尾开始查找,regex,uppercase,right-to-left,Regex,Uppercase,Right To Left,我想得到所有字符,直到有一个大写,但从结尾到开头。(或从右向左) 这是一个测试 我需要这是一个测试 这就是我设法找到的: ^.*?(?=[A-Z]) 但是它返回blab blab 12 34使用以下正则表达式: 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

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

这是一个测试

我需要
这是一个测试

这就是我设法找到的:

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

但是它返回blab blab 12 34

使用以下正则表达式:

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!">
irb(main):001:0>regex=/([A-Z][^A-Z]*)$/
irb(main):002:0>“blab blab 12 34这是一个测试!”。匹配正则表达式
=> #

使用以下正则表达式:

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!">
irb(main):001:0>regex=/([A-Z][^A-Z]*)$/
irb(main):002:0>“blab blab 12 34这是一个测试!”。匹配正则表达式
=> #

好的,我将添加这一点作为答案,稍后可能会将其开发为其他变体。简单的解决办法应该是:

 [A-Z][^A-Z]*$
测试(在Perl中):

返回:

 This is a test!
要解决这个问题,需要将模式锚定在字符串的末尾(
$

问候


rbo

好的,我会补充这一点作为答案,以后可能会发展成其他变体。简单的解决办法应该是:

 [A-Z][^A-Z]*$
测试(在Perl中):

返回:

 This is a test!
要解决这个问题,需要将模式锚定在字符串的末尾(
$

问候


是的!我在努力学习如何使用美元符号。天哪,这很容易。。。!谢谢如果可能的话,把它作为一个答案,这样我就可以接受。我明白了,尤西的答案出现得更早,所以他赢了这场比赛。我接受失败;-)@怎么他的答案没有出现?我一直在刷新页面,没有看到它。无论如何,对不起,我把他的回答标为接受。如果不是,那就不公平了。但我也比你投了更高的票:我是一个老ft,而且这些年来速度越来越慢;-)所以**年轻的红心们得到了战利品(如果他们应得的话;-)。@rubberboots是的!我在努力学习如何使用美元符号。天哪,这很容易。。。!谢谢如果可能的话,把它作为一个答案,这样我就可以接受。我明白了,尤西的答案出现得更早,所以他赢了这场比赛。我接受失败;-)@怎么他的答案没有出现?我一直在刷新页面,没有看到它。无论如何,对不起,我把他的回答标为接受。如果不是,那就不公平了。但我也比你投了更高的票:我是一个老ft,而且这些年来速度越来越慢;-)所以**年轻的心脏可以得到战利品(如果他们应得的话;-)。