如何阻止正则表达式从左边贪婪

时间:2014-03-04 04:26:41

标签: regex

我知道你可以使用“?”阻止正则表达式从右边贪婪标志。但是左边呢?假设我有这个:

X test X junk X Hello Y junk2 Y

如何强制它在X和Y之间仅选择“Hello”?

到目前为止我的正则表达式:

/X(.*?)Y/g

谢谢。

5 个答案:

答案 0 :(得分:1)

您可以使用以下模式:/X\s+([^XY]+)\s+Y/g

答案 1 :(得分:1)

您可以使用此模式X([^XY]+)Y/g

答案 2 :(得分:1)

尝试以下模式:/.*X(.*?)Y/g Demo

答案 3 :(得分:1)

在搜索之前反转目标字符串,然后搜索反转的正则表达式。在python:

m=re.search(r'Y(.*?)X',reversed(s))
if m:
    return reversed(m.group(1))

答案 4 :(得分:0)

以下内容适用于perl:

$_='X test X junk X Hello Y junk2 Y';
if (/X(?!.*X)(.*?)Y/) {
    print "$1\n";
}
else {
    print "No match!\n";
}

(?!.*X)确保第一个X后面没有第二个。

相关问题