在正则表达式中使用交替时,我们应该在交流发电机中包含项目,以避免受到引擎急切的影响。然后,如果有一个列表,co,co.,co-op,association,assoc我们应该更愿意将它们包括在内以获得最精确的匹配。然后,这应该改为association,assoc,co-op,co.,co.如果包含连字符或斜线,我有一个基本的正则表达式模式将单词一分为二,所以我只得到连字符或斜线之前的部分:(.*(?<!\w)(CO-OP|CO|CO.)(?!\w).*)[-/](\s*\w+.*)但是,此正则表达式在提供ABC CO-OP ELEMENTARY SCHOOL. 这个字符串正在变成ABC CO. 但是,如果我从交流发电机中移除 CO,字符串将以正确的原始形式返回ABC CO-OP ELEMENTARY SCHOOL。另外,字符串ARMSTRONG CO-OP ELEMENTARY SCHOOL / ECOLE PRIMAIRE ARMSTRONG COOPERATIVE应该被打断,变成ARMSTRONG CO-OP ELEMENTARY SCHOOL没有斜线后的字符串。为什么CO在交流发电机中匹配并用于断开字符串?
1 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
您的问题是您的正则表达式要求字符串中有 a-或 a \,因此它强制在inABC CO-OP ELEMENTARY SCHOOL上拆分。如果你:-CO-OP
使正则表达式的第二部分可选;
.*将第一组末尾的 改成 lazy ( ).*?;和添加开始和结束字符串锚点
你会得到你想要的结果:
^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$
还要注意.inCO.应该被转义。
添加回答
举报
0/150
提交
取消
