Regex将单词与以哈希开头、以空格结尾的特殊字符相匹配

Regex将单词与以哈希开头、以空格结尾的特殊字符相匹配,regex,special-characters,Regex,Special Characters,鉴于案文: This is a #tag and this is another #love@irc.oftc.net and more text. 我希望匹配以哈希开头、以空白字符结尾的单词(我不想为#love@irc.oftc.net) 我不能使用lookarounds,我不想使用\b 我尝试了#.*\b,#.*\s,这将比我要求的匹配更多。我猜*也将匹配空格,因此忽略最后一个检查 我用于测试。 你可以匹配每个字符,除了中间的空间。 试试这个: #[^\s]+\s 您可以使用 #\S+

鉴于案文:

This is a #tag and this is another #love@irc.oftc.net and more text.
我希望匹配以哈希开头、以空白字符结尾的单词(我不想为
#love@irc.oftc.net

我不能使用
lookarounds
,我不想使用
\b

我尝试了
#.*\b
#.*\s
,这将比我要求的匹配更多。我猜
*
也将匹配空格,因此忽略最后一个检查


我用于测试。

你可以匹配每个字符,除了中间的空间。

试试这个:

#[^\s]+\s
您可以使用

#\S+

详细信息

  • #
    -一个
    #
    符号
  • \S+
    -1个或多个除空格以外的字符(它也可以写成
    [^\S]*
    ,但
    \S
    更短)

作为一种可能的增强,您仍然可以考虑使用Word和Word边界。例如,当您希望避免匹配<代码> ABC.TAGLIGETEXT/<代码>时,或者当您需要避免在HASTAG末尾匹配标点符号时,可以考虑使用

\B#\S+\b
看。如果
\B
前面有单词字符,则非单词边界将无法匹配,并且
\B
将在最右边的非单词字符之前停止匹配。

是否要
\S+
?好吧,也许
\B\S+
会更好。@WiktorStribiż。谢谢