code_junkie

parsings strings: extracting words and phrases [JavaScript]

Nov 10th, 2011
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. input : 'foo bar "lorem ipsum" baz'
  2. output: ['foo', 'bar', 'lorem ipsum', 'baz']
  3.  
  4. var str = 'foo bar "lorem ipsum" baz';
  5. var results = str.match(/("[^"]+"|[^"s]+)/g);
  6.  
  7. var input = 'foo bar "lorem ipsum" baz';
  8.  
  9. output = input.match(/("[^"]+"|[^"s]+)/g);
  10. output = input.match(/"[^"]*"|w+/g);
  11. output = input.match(/("[^"]*")|([^s"]+)/g)
  12. output = /(".+?"|w+)/g.exec(input);
  13. output = /"(.+?)"|(w+)/g.exec(input);
  14.  
  15. var input = 'foo bar "lorem ipsum" "dolor sit amet" baz';
  16. var terms = input.split(" ");
  17.  
  18. var items = [];
  19. var buffer = [];
  20. for(var i = 0; i < terms.length; i++) {
  21. if(terms[i].indexOf('"') != -1) { // outer phrase fragment -- N.B.: assumes quote is either first or last character
  22. if(buffer.length === 0) { // beginning of phrase
  23. //console.log("start:", terms[i]);
  24. buffer.push(terms[i].substr(1));
  25. } else { // end of phrase
  26. //console.log("end:", terms[i]);
  27. buffer.push(terms[i].substr(0, terms[i].length - 1));
  28. items.push(buffer.join(" "));
  29. buffer = [];
  30. }
  31. } else if(buffer.length != 0) { // inner phrase fragment
  32. //console.log("cont'd:", terms[i]);
  33. buffer.push(terms[i]);
  34. } else { // individual term
  35. //console.log("standalone:", terms[i]);
  36. items.push(terms[i]);
  37. }
  38. //console.log(items, "n", buffer);
  39. }
  40. items = items.concat(buffer);
  41.  
  42. //console.log(items);
  43.  
  44. 'foo bar "lorem ipsum" baz'.match(/"[^"]*"|w+/g);
  45.  
  46. output = /(".+?"|w+)/g.exec(input)
  47.  
  48. output = /"(.+?)"|(w+)/g.exec(input)
  49.  
  50. 'foo bar "lorem ipsum" baz'.match(/("[^"]*")|([^s"]+)/g)
  51. output: ['foo', 'bar', '"lorem ipsum"', 'baz']
  52.  
  53. var input = 'foo bar "lorem ipsum" baz';
  54. var R = /(w|s)*w(?=")|w+/g;
  55. var output = input.match(R);
  56.  
  57. output is ["foo", "bar", "lorem ipsum", "baz"]
  58.  
  59. var input2 = 'foo bar lorem ipsum" baz'; var output2 = input2.match(R);
  60. var input3 = 'foo bar "lorem ipsum baz'; var output3 = input3.match(R);
  61.  
  62. output2 is ["foo bar lorem ipsum", "baz"]
  63. output3 is ["foo", "bar", "lorem", "ipsum", "baz"]
  64.  
  65. var input4 = 'foo b"ar bar" "bar "lorem ipsum" baz';
  66. var output4 = input4.match(R);
  67.  
  68. output4 is ["foo b", "ar bar", "bar", "lorem ipsum", "baz"]
Add Comment
Please, Sign In to add comment