有一个规律:
/[\p{L}-—]+(?:\h[\p{L}-—]+)*(?=,)?/m
在网站上检查:https ://regex101.com/r/ojQ1Hy/3
问题是 Laravel,或者更确切地说是 php,给了我一个拼写出来的答案,尽管在网站上它给出了words。我究竟做错了什么?
$re = '/[\p{L}-—]+(?:\h[\p{L}-—]+)*(?=,)?/m';
$str = 'гендерная интрига, драма, история, комедия, повседневность, приключения, психология, романтика, сёнэн-ай, яой';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
结果:
[0]=>
array(1) {
[0]=>
string(1) "�"
}
[1]=>
array(1) {
[0]=>
string(3) "е�"
}
[2]=>
array(1) {
[0]=>
string(1) "�"
}
[3]=>
array(1) {
[0]=>
string(5) "ер�"
}
[4]=>
array(1) {
[0]=>
string(1) "�"
}
...
明白了。问题出在正则表达式中:
代替: