我想只保留以#或@
开头的字符串因此,仅匹配 @susui 或删除其周围的文字。 PHP或JavaScript。
答案 0 :(得分:4)
根据您定义“单词”的方式,您可能需要
(?<=\s|^)[@#]\S+
或
(?<=\s|^)[@#]\w+
<强>解释强>
(?<=\s|^) # Assert that the previous character is a space (or start of string)
[@#] # Match @ or #
\S+ # Match one or more non-space characters
(or \w+) # Match one or more alphanumeric characters.
所以,在PHP中:
preg_match_all('/(?<=\s|^)[@#]\S+/', $subject, $result, PREG_PATTERN_ORDER);
为您提供字符串$result
中所有匹配项的数组$subject
。在JavaScript中,这不起作用,因为不支持lookbehinds(正则表达式开头的“Assert ...”部分)。