在正则表达式中使用交替时,我们应该在交流发电机中包含项目,以避免受到引擎急切的影响。然后,如果有一个列表,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
提交
取消