我知道你可以使用“?”阻止正则表达式从右边贪婪标志。但是左边呢?假设我有这个:
X test X junk X Hello Y junk2 Y
如何强制它在X和Y之间仅选择“Hello”?
到目前为止我的正则表达式:
/X(.*?)Y/g
谢谢。
答案 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后面没有第二个。