什么是最佳做法,使用正则表达式选择一对分隔符之间的内容,不包括 PHP 和 JS 中的分隔符?
aassssd [dddd] fff ffff (delimiter=[..]) output -> dddd
aassssd QddddQ fff ffff (delimiter=Q) output -> dddd
aassssd RddddQ fff ffff (delimiters=R...Q) output -> dddd
aassssd "dddd" fff ffff (delimiter=") output -> dddd
关注的是排除分隔符,选择整体相对容易:
/\"[^"]\"/ //for line four
最好是解决方案返回缩放器。理想的答案仅使用RegEx,可以在http://regexpal.com/
中进行测试答案 0 :(得分:1)
我会使用非贪婪的.*?
来捕获截至结束分隔符的所有内容:
$str = 'aassssd QddddQ fff ffff';
preg_match_all('/[Q](.*?)[Q]/', $str, $out, PREG_PATTERN_ORDER);
var_dump($out);
产生:
Array
(
[0] => Array
(
[0] => QddddQ
)
[1] => Array
(
[0] => dddd
)
)
您需要转义[
和]
分隔符:/[\[](.*?)[\]]/
这使用单个捕获组(.*?)
,因此您需要的输出位于输出数组中的位置1。
答案 1 :(得分:0)
aassssd [dddd] fff ffff (delimiter=[..]) output -> dddd
PHP的RegEx:
(?<=\[).*?(?=\])
RegEx for JS(也适用于PHP):
[^\[]*?(?=\])