的Javascript:斯普利特和记号化提供的字符串
下面是我负责的一个javascript要求:
给出了这样的字符串:的Javascript:斯普利特和记号化提供的字符串
“ [ condition12 (BRAND) IN 'Beats by Dr. Dre & D\’Silva of type Band’ of type 'IDENTIFIER_STRING’ ] ”
我要来标记和提取:
- condition12
- BRAND
- IN
- Beats by Dr. Dre & D\’Silva of type Band
- IDENTIFIER_STRING
这里的我正在考虑执行的算法:
- 移除第一&最后方括号:.trim()片(1,-1)
- 删除的“类型”
- 使用空间(忽略多次出现)分割字符串的最后一个匹配:.split(/\ S + /克))
- 除去从最后数组元素中的第一&最后单引号(即会包含“IDENTIFIER_STRING”或类似)
- 从主串,firstIndexOf之间创建子(“'”)和lastIndexOf('类型')&修剪它以获得'节拍博士Dre & D'席尔瓦类型乐队'
现在的问题,你所有的专家,有没有更好的方法来处理这个:)?
在此先感谢!
〜VS
你可以得到所有你想要与一个正则表达式:
str = " [ condition12 (BRAND) IN 'Beats by Dr. Dre & D\'Silva of type Band' of type 'IDENTIFIER_STRING' ] ";
matches = str.match(/^\s*\[\s*(.*?)\s+\((.*?)\)\s+(.*?)\s+'(.*?)'\s+.*?'(.*?)'\s*\]\s*$/);
结果:
matches[1]: "condition12"
matches[2]: "BRAND"
matches[3]: "IN"
matches[4]: "Beats by Dr. Dre & D'Silva of type Band"
matches[5]: "IDENTIFIER_STRING"
使用一个正则表达式!你感兴趣的值将在匹配[1]到匹配[5]。
您可能需要调整此正则表达式,具体取决于哪些字符出现在各种标记中。 (例如,它假定有一些空白,那么条件就是更多的空白,如果条件中有空白则它会中断)。你可以制定出正则表达式here
var str = "[ condition12 (BRAND) IN 'Beats by Dr. Dre & D\'Silva of type Band' of type 'IDENTIFIER_STRING' ]";
var re = /\[\s+(\S+)\s+\((.*)\)\s+(\S+)\s+'(.*)'\s+of type\s+'(.*)'\s+\]/;
var matches = re.exec(str);
console.log(matches);
非常感谢!出于某种原因,当我执行此操作时,它不会打印“IN”。 – user2793354
哦,我错过了那一个。现在试试。 – James
工作,再次感谢! – user2793354
真棒,作品像一个魅力!做得好! – user2793354