正则表达式看两个字符串之间的背后?

时间:2013-11-12 14:50:11

标签: regex

我正在尝试在两个字符串之间进行搜索,从第二个字符串向后看。这可能吗?

例如:我有一个字符串 "如果快速的棕色狗跳过懒惰的红狗,那么......"

我想找到""之间的字符。和#34;红狗"。 我期待找到" 懒惰"。

凭借我目前的正则表达式,我的角色太多了。

(?<=the)(.*)(?=red dog)

3 个答案:

答案 0 :(得分:0)

尝试使用非贪婪的量词:

(?<=the)(.*?)(?=red dog)

这将改变表达式的行为,以便内部组仅匹配满足模式所需的少数字符。

但是,我应该指出,在这种情况下,使用lookarounds可能不是必需的。你可以简单地使用这样的模式:

.*the(.*?)red dog

并提取相关的捕获组。第一个.*是贪婪的,这意味着该模式将匹配它可以在满足模式的字符串中找到的最后一个the

这是C#中的一个工作示例:

var input = "If the quick brown dog jumps over the lazy red dog, then...";
var match = Regex.Match(input, ".*the(.*?)red dog");
Console.WriteLine(match.Groups[1].Value); // lazy

答案 1 :(得分:0)

(?<=the)(.*?)(?=red)

它匹配这些单词之间尽可能少的字符,但.匹配所有内容,可能

(?<=the)([a-z ]*?)(?=red dog)

可以帮助您仅匹配字母和空格字符

答案 2 :(得分:-1)

尝试:

(?:the)(.*)(?:red dog)

并阅读小组:$ 1