Reputation: 1299
I want to split a string into sections based on headers which follow a specific format (==HEADER==
). Here's what the input string would look like:
== Section header ==
Text inside section
=== Maybe a nested section ===
With some more text
And more text
==Then the next section header, perhaps w/o spaces between text and equals signs==
With text inside it
Here's the output I'd like:
[
'== Section header ==
Text inside section
=== Maybe a nested section ===
With some more text
And more text',
'==Then the next section header, without spaces between text and equals signs==
With text inside it'
]
I tried doing
pagetext = "== Test header ==\n Some test text, with random equals signs==newlines\n or whatever\n ==Another header == \n more text,\nnewlines\nohmy"
sections = [];
section_re = /==\s*(\s*[^=]*)\s*==/g;
var section_headers = pagetext.match(section_re);
for (var i = 0; i < section_headers.length; i++) {
var section_start = pagetext.indexOf(section_headers[i]);
var section_text = pagetext.substring(section_start);
if (i < section_headers.length - 1) {
var section_end = section_text.substring(section_headers[i].length).indexOf(section_headers[i + 1]) + section_headers[i].length;
section_text = section_text.substring(0, section_end);
}
sections.push(section_text);
}
But it split on the "random equals" signs, giving me:
["== Test header ==\n Some...ith random equals signs", "==newlines\n or whatever...ore text,\nnewlines\nohmy"]
This isn't right. I have a feeling my code may just be too complex -- is there a better way to do this?
Upvotes: 0
Views: 264
Reputation: 36
have a go with
result = subject.match(/^==[^=]*?==$((\r?\n?)(?!==[^=]).*)*/img);
Upvotes: 1
Reputation: 1605
If you're feeling lazy, you can give this a go: https://code.google.com/p/wiki2html/
I've used it successfully before.
Upvotes: 0