我只想保留以 # 或 @ 开头的字符串
- foobar @sushi - 芥末
- foobar #sushi - 辣根
因此仅匹配@susui或删除它周围的文本。PHP 或 JavaScript。
我只想保留以 # 或 @ 开头的字符串
因此仅匹配@susui或删除它周围的文本。PHP 或 JavaScript。
根据您定义“单词”的方式,您可能想要
(?<=\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(正则表达式开头的“断言...”部分)。