【问题标题】:Regex capture group ( ) within character set [ ]字符集中的正则表达式捕获组 ( ) [ ]
【发布时间】:2018-04-24 22:54:51
【问题描述】:

我只想匹配空格字符 (),前提是它们后跟一个哈希 (#)。

这就是下面( #) 正在尝试做的事情,这是一个捕获组。 (我尝试转义括号,否则在组集中无法正确识别括号)。但是,这不起作用。

下面的正则表达式

/#[a-zA-Z\( #\)]+/g

符合以下所有条件

#CincoDeMayo #Derby party with UNLIMITED #seafood towers

虽然我想匹配 #CincoDeMayo #Derby 和单独的 #seafood

有没有办法在字符集[] 中指定捕获组()

【问题讨论】:

  • 仅在后跟散列时匹配空格字符:\s(?=#)。要匹配示例文本中哈希后的单词:#\w+。结合这两个要求:\s*(?=#)#\w+

标签: regex


【解决方案1】:

字符类旨在匹配单个字符,因此,无法在字符类中定义字符序列

我认为您想匹配特定的连续主题标签。使用

/#[a-zA-Z]+(?: +#[a-zA-Z]+)*/g

/#[a-zA-Z]+(?:\s+#[a-zA-Z]+)*/g

请参阅regex demo

详情

  • #[a-zA-Z]+ - # 后跟 1+ 个 ASCII 字母
  • (?: - 非捕获组的开始...
    • \s+ - 1+ 个空格
    • #[a-zA-Z]+ - # 后跟 1+ 个 ASCII 字母
  • )* - ... 重复 0 次或更多次。

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多