我只想保留以 # 或 @ 开头的字符串
- 福巴@sushi - 芥末
- 福巴 #sushi - 辣根
因此,仅匹配@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("Assert..."部分从正则表达式的开头)不受支持。