【问题标题】:Regex to match a word with special characters that starts with hash and ends with space正则表达式匹配具有以散列开头并以空格结尾的特殊字符的单词
【发布时间】:2018-08-24 05:07:43
【问题描述】:

给定文字:

This is a #tag and this is another #love@irc.oftc.net and more text.

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

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

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

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

【问题讨论】:

  • 你想要#\S+吗?嗯,可能\B#\S+ 会更好。
  • @WiktorStribiżew #\S+ 工作并且是最紧凑的,请添加答案,我会接受。谢谢!

标签: regex special-characters


【解决方案1】:

你可以匹配除中间空格以外的所有字符。

试试这个:

#[^\s]+\s

Demo

【讨论】:

    【解决方案2】:

    你可以使用

    #\S+
    

    请参阅regex demo

    详情

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

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

    \B#\S+\b
    

    another regex demo。如果# 之前有单词char,\B 非单词边界将匹配失败,\b 将在最右边的非单词char 之前停止匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      相关资源
      最近更新 更多