我只想保留以 # 或 @ 开头的字符串
- foobar @sushi - 芥末
- foobar #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...”部分)。
关于php - 正则表达式保留/匹配以某个字符开头的任何单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171305/