0

我只想保留以 # 或 @ 开头的字符串

  1. foob​​ar @sushi - 芥末
  2. foob​​ar #sushi - 辣根

因此仅匹配@susui或删除它周围的文本。PHP 或 JavaScript。

4

1 回答 1

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(正则表达式开头的“断言...”部分)。

于 2012-06-23T16:52:10.870 回答