在
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
解决方案最好返回缩放器。理想的答案仅使用正则表达式,可以在 http://regexpal.com/中进行测试
我会使用非贪婪.*?
,它捕获所有内容直到结束分隔符:
$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。
aassssd [dddd] fff ffff (delimiter=[..]) output -> dddd
PHP 正则表达式:
(?<='[).*?(?='])
正则表达式 for JS(也适用于 PHP):
[^'[]*?(?='])