正则表达式:交流发电机订单问题
Regex: Alternators order issue
在正则表达式中使用 alternation 时,我们应该在交流发电机中包含项目,以避免受到引擎急切的影响。
然后,如果有一个列表,例如 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
在交流发电机中匹配并用于断开字符串?
您的问题是您的正则表达式 要求 字符串中有 -
或 \
,因此它强制 ABC CO-OP ELEMENTARY SCHOOL
在 CO-OP
中拆分 -
。如果你:
- 将正则表达式的第二部分设为可选;
- 将第一组末尾的
.*
改为偷懒(.*?
);和
- 添加开始和结束字符串锚点
你会得到你想要的结果:
^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$
另请注意,CO.
中的 .
应进行转义。
在正则表达式中使用 alternation 时,我们应该在交流发电机中包含项目,以避免受到引擎急切的影响。
然后,如果有一个列表,例如 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
在交流发电机中匹配并用于断开字符串?
您的问题是您的正则表达式 要求 字符串中有 -
或 \
,因此它强制 ABC CO-OP ELEMENTARY SCHOOL
在 CO-OP
中拆分 -
。如果你:
- 将正则表达式的第二部分设为可选;
- 将第一组末尾的
.*
改为偷懒(.*?
);和 - 添加开始和结束字符串锚点
你会得到你想要的结果:
^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$
另请注意,CO.
中的 .
应进行转义。