正则表达式匹配具有以哈希开头并以空格结尾的特殊字符的单词

Erl*_*end 2 regex special-characters

鉴于文本:

This is a #tag and this is another #love@irc.oftc.net and more text.
Run Code Online (Sandbox Code Playgroud)

我想匹配以哈希开头并以空格字符结尾的单词(我不想为 指定特定模式#love@irc.oftc.net)。

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

我试过#.*\b, #.*\s,它会比我要求的更匹配。我猜它*也会匹配空格,所以最后一次检查被忽略。

我使用https://regexr.com/进行测试。

Wik*_*żew 6

您可以使用

#\S+
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

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

作为一种可能的增强,您仍然可以考虑使用单词和非单词边界。例如,当您想避免匹配abc#tagliketext或需要避免匹配标签末尾的标点时,您可以考虑使用

\B#\S+\b
Run Code Online (Sandbox Code Playgroud)

请参阅另一个正则表达式演示。的\B,如果有一个字字符前非单词边界将失败的比赛#,并且\b将停止最右边的非单词字符之前匹配。