我一直试图干掉以下与字符串中的hashtags匹配但没有成功的正则表达式:
/^#(\w+)|\s#(\w+)/i
这不起作用:
/^|\s#(\w+)/i
不,我不想在开头用逗号进行逗号:
/(^|\s)#(\w+)/i
我在Ruby中这样做 - 尽管我认为这不应该是相关的。
举一些匹配和不匹配字符串的例子:
'#hashtag it is' # should match => [["hashtag"]]
'this is a #hashtag' # should match => [["hashtag"]]
'this is not a#hashtag' # should not match => []
有什么建议吗?我在挑剔吗?
答案 0 :(得分:5)
你可以使用。
/\B#(\w+)/i
"this is a #hash tag" # matches
"#hash tag" # matches
"this is not#hash tag" # doesn't match
答案 1 :(得分:4)
/(?:^|\s)#(\w+)/i
将?:
前缀添加到第一个组将导致它不是匹配组,因此只有第二个组实际上是匹配组。因此,字符串的每个匹配将具有单个捕获组,其内容将是标签。
答案 2 :(得分:0)
这使用了后视,我不知道Ruby中是否支持外观(我听说它们在JavaScript中不受支持)
/(^#(\w+))|((?<= )#(\w+))/