比方說,我一直在尋找這個詞hello
,我會使用的正則表達式:需要一個正則表達式匹配與@符號開頭的詞
/\bhello\b/
,當然,那個偉大工程。但我真正需要匹配的是@hello
。而且我一直無法提出一個正則表達式來完成這項工作。我發現的最接近的東西是:
/[@]hello\b/
關閉但並不完美。
問題是,這也匹配像「x @你好」的東西。我一直無法正確定義左邊界。
比方說,我一直在尋找這個詞hello
,我會使用的正則表達式:需要一個正則表達式匹配與@符號開頭的詞
/\bhello\b/
,當然,那個偉大工程。但我真正需要匹配的是@hello
。而且我一直無法提出一個正則表達式來完成這項工作。我發現的最接近的東西是:
/[@]hello\b/
關閉但並不完美。
問題是,這也匹配像「x @你好」的東西。我一直無法正確定義左邊界。
可以@
此之前使用\B
:
/\[email protected]\b/
\B
斷言位置\b
不匹配。
編輯:如果要求只有當它是由空格或行之前開始,然後用它來搭配@hello
:
(?<=\s|^)@hello\b
function convertHashtags ($str)
{
$regex="/@+([a-zA-Z0-9_]+)/";
$str=preg_replace($regex, '<a href="$1">$0</a>', $str);
return $str;
}
echo convertHashtags("hello @stackoverflow kal");
左邊界是否總是在行首?如果是這樣,用'^'在RE前加上。你試圖避免匹配什麼其他模式,以及你在寫什麼語言?不同的正則表達式解析器遵循不同的「規則」。 – ghoti
好問題 - 目標「@hello」可以出現在字符串的任何位置。開始,結束或中間......我正在用java編寫正則表達式。 – JohnC