是否可以使用preg_match
在PHP中創建未被模式Y包含的模式X的正則表達式?正則表達式:匹配所有出現的X不被Y所包圍
例如,考慮這個字符串:
hello, i said <a>hello</a>
我想要的第一聲問候,但不是第二相匹配的正則表達式...我想不出任何痕跡查找
是否可以使用preg_match
在PHP中創建未被模式Y包含的模式X的正則表達式?正則表達式:匹配所有出現的X不被Y所包圍
例如,考慮這個字符串:
hello, i said <a>hello</a>
我想要的第一聲問候,但不是第二相匹配的正則表達式...我想不出任何痕跡查找
假設你的使用情況是多一點補償lex then hello, i said <a>hello</a>
;那麼,如果你在哪裏尋找hello, i said <a>after arriving say hello</a>
所有hello
你可能只想捕捉到好的和壞的,然後使用一些編程邏輯只處理您感興趣的比賽。
這個表達式將捕獲所有<a>...</a>
子字符串和所有hello
字符串。由於不期望的子串匹配的第一,如果期望的子串內出現那麼它永遠不會被包括在捕獲組1
<a>.*?<\/a>|\b(hello)\b
示例文本
Chello said Hello, i said <a>after arriving say hello</a>
代碼
$string = 'Chello said Hello, i said <a>after arriving say hello</a>';
$regex = '/<a>.*?<\/a>|\b(hello)\b/ims';
preg_match_all($regex, $string, $matches);
foreach($matches as $key=>$value){
if ($value[1]) {
echo $key . "=" . $value[0];
}
}
輸出
注意在招呼上殼體H
表明,它是所需的子串。
0=Hello
您使用的是哪種正則表達式引擎?你有沒有想過使用否定字符,如'[^ ...]'? – Jerry
@Jerry它實際上是php的preg_match –