繁体   English   中英

正则表达式以匹配多行字符串

[英]regex to match a multi-line string

对不起,这个名字不好用。 我正在寻找一个有效的正则表达式来匹配以下内容:

[2014-11-13 13:05:04] [path/to/class.instagram.php] Options: array (
  'client_id' => '',
  'client_secret' => '',
  'object' => 'tag',
  'object_id' => 'rwar',
  'aspect' => 'media',
  'callback_url' => 'http://www.localthisday.nl/instagram.callback.php',
)

我希望将其拆分成这样:

1. [2014-11-13 13:05:04]
2.[path/to/class.instagram.php]
3. Options: array (
  'client_id' => '',
  'client_secret' => '',
  'object' => 'tag',
  'object_id' => 'rwar',
  'aspect' => 'media',
  'callback_url' => 'http://www.localthisday.nl/instagram.callback.php',
)

我目前正在使用这个:

(\\[(.*)\\])(\\s{1})(\\[(.*)\\])(\\s{1})(.*)/gmi

我知道,这不是很好,这可能就是为什么它无法按我希望的方式工作的原因。 问题是; 它是多行字符串,由于某种原因,它不能用于多行。 有人可以帮我吗? 不幸的是,我的正则表达式不好。

只需将正则表达式中的最后一个(.*)替换为([\\S\\s]*)

/(\[.*\])\s(\[.*\])\s([\S\s]*)/gmi

DEMO

请参见上面的演示链接中右侧的截图。

使用非贪婪量词:

(\[.*?\])\s(\[.*?\])\s(.*)/gmi
(\]|\))

试试这个,用$1\\n代替,看演示。

http://regex101.com/r/pQ9bV3/32

var re = /(\]|\))/gm;
var str = '[2014-11-13 13:05:04] [path/to/class.instagram.php] Options: array (\n \'client_id\' => \'\',\n \'client_secret\' => \'\',\n \'object\' => \'tag\',\n \'object_id\' => \'rwar\',\n \'aspect\' => \'media\',\n \'callback_url\' => \'http://www.localthisday.nl/instagram.callback.php\',\n)';
var subst = '$1\n';

var result = str.replace(re, subst);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM