的preg_replace保持空间,如果开始用AZ与AZ
结束时,我想带下划线的preg_replace保持空间,如果开始用AZ与AZ
但如果空间是由[AZ]包围
$string = '@@ @@ English something else';
我试图取代$string
任何空间这一点,但它取代 “@@ @@” 到 “@ _ @”
$string = preg_replace('/[^a-z]\s[^a-z]/ui', '_' , $string);
我想输出看起来像这样
@@[email protected]@_English something else
回答:
我认为您不需要包含此任务的u
unicode标志。
只需取消(*SKIP)(*FAIL)
的不良空间资格,然后替换所有符合条件的空格。
代码:(Demo)(Pattern Demo)
$string = '英文 中文 English something else'; echo preg_replace('/[a-z] [a-z](*SKIP)(*FAIL)| /i','_',$string);
输出:
英文_中文_English something else
模式说明:
[a-z] [a-z](*SKIP)(*FAIL)
< - 这意味着匹配并丢弃信空间信发生|
< - 这意味着“OR” < - 这将匹配字符串(每个非废弃空间只有这些将被替换
两个备选方案与lookarounds也将工作(和更快): (Demo)
/(?<![a-z]) | (?![a-z])/i
最快的所有的将是\B
(单词边界元字符的否定版本):(Demo)
/\B | \B/
回答:
我不知道那是什么语言,但我发现这个:Use regular expression to match ANY Chinese character in utf-8 encoding
你的正则表达式需要包含(全部)中国字符,可以表示为:
\p{Han}
这里是关于Unicode字符和支持脚本列表的PHP文档:http://php.net/manual/en/regexp.reference.unicode.php
回答:
对不起,我不知道如何在评论使用的代码,所以只需添加回复
测试的第二和第三模式也工作
我明白了:第二个,但第三一个有点难受,LOL
我需要去检查https://www.regular-expressions.info/
$string = '英文名 中文名 Peter Wong,John Tam,Sam Hu'; $string = preg_replace('/(?<![a-z]) | (?![a-z])/i', ',', $string);
输出
英文名,中文名,Peter Wong,John Tam,Sam Hu
因为CJK名称是每个字符之间没有空格,所以这解决了大问题,我
工作就像一个魅力;)
三江源@mickmackusa
以上是 的preg_replace保持空间,如果开始用AZ与AZ 的全部内容, 来源链接: utcz.com/qa/259293.html