Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384
Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700
Warning: Invalid argument supplied for foreach() in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707
Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700
Warning: Invalid argument supplied for foreach() in /home/neginium/www/amimilab/wp/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707
JavaScriptである記号に囲まれた複数行の文字を抜き出そうとしたときにつまづいたので、解決法をメモ
たとえば、以下のようなテキストがあるとします。
<data> <item>ITEM1</item> <item>ITEM2-1 ITEM2-2 ITEM2-3 ITEM2-4</item> <item>ITEM3</item> </data>
ここから、<item>に囲まれた文字を連続して取り出そうとしたときに、次の正規表現が考えられます。
//この部分 var match_result = str.match(/<item>(.*?)<\/item>/g); for(var idx in match_result){ alert(match_result[idx]); }
しかし、matchメソッドは、行単位でマッチングをかけるため、 ITEM1,ITEM3はマッチしますが、ITEM2に関しては同じ行に<ITEM></ITEM>が無いためマッチしません。
PHPのpreg_matchにある’s’みたいなフラグがあればいいんですけど、matchメソッドにはそんなのありません。
そこで’.*?’としている部分を'[\s\S]*?’のように、空白文字か空白文字以外かでマッチするように指定します。(別に'[\w\W]’でも大丈夫です)
参考元: Stackoverflow (how-to-use-javascript-regex-over-multiple-lines)
前のコードを修正して.*?を[\s\S]*?としてみます。
//この部分 var match_result = str.match(/<item>([\s\S]*?)<\/item>/g); for(var idx in match_result){ alert(match_result[idx]); }
このように、<item>で囲まれたすべての行にマッチするようになりました。