regex - 如何匹配满足我的正则表达式模式的最短可能的字符序列?

标签 regex perl matching

我有一个字符串 "ajjjjjjjjjaab"
我想要一个匹配最后一个 "ab" 的模式而不是整个字符串甚至 "aab" .

/a.*?b/  # returns two groups

或者
/a.??b/ # matches last aab

两者都不起作用。

最佳答案

解决您的问题的一种简单方法是匹配:

.*(a.*b)

与第一.*贪婪,它会尽可能多地匹配。然后你会得到一个你真正需要的匹配组,( $1 )。请注意,这假设您匹配最后一次出现的模式。您可能想要 .*(a.*?b)如果您有多个 b s 靠近字符串的末尾,并且您想要最后一个 a 之后的第一个.

关于regex - 如何匹配满足我的正则表达式模式的最短可能的字符序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401571/

相关文章:

matlab - 匹配两个系列的 Mfcc 系数

java - 使用正则表达式进行顺序v/s嵌套循环结构解析

Javascript 返回一个字符串作为 jquery 验证添加方法的正则表达式

ruby - 为什么这个正则表达式不匹配数字和单个字母?

c++ - 在cpp中重载模板函数

java - 无法在android中实现描述符

javascript - jQuery - 将条件存储在字符串中并稍后执行

Perl WWW::Mechanize -- 获取 URL 的身份验证错误

string - 在 Perl 中,如何生成由八个十六进制数字组成的随机字符串?

c - Perl:将字符串转换为 C 字符串文字