使用正则表达式从复杂字符串中提取主题标签
Extract hashtags from complex string using regex
我有一个疯狂的字符串,比如:
sun #plants #!wood% ##arebaba#tey travel#blessed #weed das#$#F!@D!AAAA
我想提取所有以#开头或前面有space的"words"(也包含特殊字符),结果如下:
[
'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)
(?= [ #] | $ )
或者,如果你觉得这么简单,那就用([^ #]+)
或者[^ #]+
它得到相同的东西(如 split 相反)。
我有一个疯狂的字符串,比如:
sun #plants #!wood% ##arebaba#tey travel#blessed #weed das#$#F!@D!AAAA
我想提取所有以#开头或前面有space的"words"(也包含特殊字符),结果如下:
[
'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)
(?= [ #] | $ )
或者,如果你觉得这么简单,那就用([^ #]+)
或者[^ #]+
它得到相同的东西(如 split 相反)。