你能否指出我的正则表达中的错误?
/[\x{4e00}-\x{9fa5}]*[.\s]*\[\/m\][\x{4e00}-\x{9fa5}]/u
我的字符串以中文字符([\x{4e00}-\x{9fa5}]
)开头,后跟任何字符,以“[/ m]”和另一个中文字符结尾。所以字符串可能看起来像:
我... some text goes here (contains any characters including spaces and new lines)... [/m]我
但不幸的是,我的正则表达式没有按预期工作。
答案 0 :(得分:1)
看起来您可能希望将第一个'*'替换为'+'以确保您在初始位置至少有一个匹配字符,并且可以使用'\ s'删除字符组并使用'。 “因为那将匹配任何角色。另外,如果这是一个完整的行,我会用'^'开始正则表达式并以'$'结束。
答案 1 :(得分:1)
答案 2 :(得分:1)
用正则表达式(php)匹配汉字
<?php
# this is our regx /\p{Han}+/u
$string='我... some text goes here (contains any characters including spaces and new lines)... [/m]我';
if(preg_match("/\p{Han}+/u", $string)){
echo "chinese here";
}
if(preg_match("/\p{Han}+/u", $string)){
#get all chinese characters in one array
preg_match_all('/\p{Han}+/u',$string,$matches);
print_R($matches[0]);
}
?>
中文在这里
Array (
[0] => Array
(
[0] => 我
[1] => 我
)
)
您可以进行foreach并替换所需的字符。
答案 3 :(得分:0)
/[\x{4e00}-\x{9fa5}][.\s]*\[\/m\][\x{4e00}-\x{9fa5}]/um
答案 4 :(得分:0)
[\x{4e00}-\x{9fa5}]+.+\[\/m\][\x{4e00}-\x{9fa5}]
符合您的说明:
[\x{4e00}-\x{9fa5}]+
- &gt; 4E00和9FA5之间的一个或多个字符。
.+
- &gt;一个或多个其他字符
\[\/m\]
- &gt; [/ M]
[\x{4e00}-\x{9fa5}]
- &gt; 4E00和9FA5之间的一个字符