>我有这段文字: Retailer-ul Amazon foloseste metode severe pentru a-si descuraja etc. angajatii din depozite sa nu mai fure din produse. Pe ecrane li se arata siluete de angajati care au furat produse, li se spune ce au furat si cat valorau produsele, aparand si mentiunea "arestat" sau "concediat", scrie Bloomberg. Unii spun ca... and so on
和我正在尝试替换 fraze 中所有缩写字符串,因此例如etc.
是一个缩写,因为它后面的单词angajatii
以小写字母开头,而不是 produse.
这是 fraze 的结尾,因为它跟随单词Pe
以大写字母开头,我不想删除它。
我有这个代码$subject = preg_replace('~'b[a-z]+'.'s[a-z]~', '', $subject);
它匹配每个缩写,后面有一个.
和一个空格('s
),然后是一个小写字母[a-z]
(例如。 descuraja etc. angajatii
变成了descuraja ngajatii
而不是descuraja angajatii
)。我不想替换其以下单词的小写字母。我不知何故无法避免它被替换。我怎样才能仍然保持相同的匹配模式,但只替换缩写、点和它后面的空格?谢谢。
把[a-z]
包装成一个积极的展望:
'b[a-z]+'.'s(?=[a-z])
查看正则表达式演示
前瞻构造仅检查其中定义的某个模式是否出现在当前位置的右侧。因此,(?=[a-z])
检查与's
匹配的空格后面是否有小写 ASCII 字母。如果存在小写,则返回匹配(并发生替换),如果找不到小写字母,则匹配失败,不发生替换。