正则表达式:交流发电机订单问题

在正则表达式中使用交替时,我们应该在交流发电机中包含项目,以避免受到引擎急切的影响。

然后,如果有一个列表,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在交流发电机中匹配并用于断开字符串?


猛跑小猪
浏览 93回答 1
1回答

阿波罗的战车

您的问题是您的正则表达式要求字符串中有 a-或 a&nbsp;\,因此它强制在inABC CO-OP ELEMENTARY SCHOOL上拆分。如果你:-CO-OP使正则表达式的第二部分可选;.*将第一组末尾的 改成 lazy (&nbsp;)&nbsp;.*?;和添加开始和结束字符串锚点你会得到你想要的结果:^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$regex101 上的演示还要注意.inCO.应该被转义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python