1
我需要指定一個首選的可選子模式,但允許備份。不幸的是,這兩種模式都是共享模式的一部分,而首選的匹配是在之後。例如:指定優先子模式在正則表達式
$string = "Fuzzy bunny is bald";
preg_match_all('@(?:bunny is (\w+)|(\w+) bunny)@',$string,$result);
預期的行爲是隻匹配「光頭」,除非它不能,在這種情況下,它應該匹配「模糊」,然而,因爲它首先遇到具有「模糊」它的反向匹配。
感謝您的幫助。
或者,您可以在'^。*'前加上已有的模式(或者兩個選項)。這將是一個更普遍的解決方案,並且還可以用於像「兔子禿頭」(根本沒有「模糊」)的輸入。 –
+1比我的t好多[瘋狂的解決方案] –
爲了僅匹配字母數字字符並忽略它中是否有數字,你可以這樣做。 '@(?:[a-zA-Z] +兔子是([a-zA-Z] +)|([a-zA-Z] +)兔子)@' – hwnd