使用正则表达式从复杂字符串中提取主题标签



我有一个疯狂的字符串,像这样:

sun #plants #!wood% ##arebaba#tey   travel#blessed    #weed das#$#F!@D!AAAA

我想提取所有以 # 开头或前面有空格的"单词"(也包含特殊字符(,结果如下:

[
  'sun',
  'plants',
  '!wood%',
  'arebaba',
  'tey',
  'travel',
  'blessed',
  'weed',
  'das',
  '$',
  'F!@D!AAAA'
]

如何使用正则表达式获得此信息?

您可以使用正则表达式match[^#s]+

var str = 'sun #plants #!wood% ##arebaba#tey   travel#blessed    #weed das#$#F!@D!AAAA';
    
var arr = str.match(/[^s#]+/g);
console.log(arr);

正则表达式演示

只需使用 match,您就可以将所有组 1 匹配项放入一个数组中。

(?:^|[ #]+)([^ #]+)(?=[ #]|$)

容易!

 (?: ^ | [ #]+ )
 ( [^ #]+ )                    # (1)
 (?= [ #] | $ )

或者,如果你觉得它很简单,那么只需使用([^ #]+)[^ #]+
它得到同样的东西(比如反向拆分(。

最新更新