Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Regex:交流发电机订单问题_Python_Regex_Regex Alternation - Fatal编程技术网

Python Regex:交流发电机订单问题

Python Regex:交流发电机订单问题,python,regex,regex-alternation,Python,Regex,Regex Alternation,当在正则表达式中使用时,我们应该在交流发电机中包含项目,以避免受到引擎急切性的影响 然后,如果有一个列表,例如co,co.,co-op,association,assoc,我们应该更愿意包含它们,以便获得最精确的匹配。然后,应将其更改为协会、协会、合作社、公司 如果包含连字符或斜杠,我有一个基本的正则表达式模式可以将一个单词一分为二,因此我只得到连字符或斜杠之前的部分: (.*(?<!\w)(CO-OP|CO|CO.)(?!\w).*)[-/](\s*\w+.*) (.*? 但是,当提供

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

然后,如果有一个列表,例如
co,co.,co-op,association,assoc
,我们应该更愿意包含它们,以便获得最精确的匹配。然后,应将其更改为
协会、协会、合作社、公司

如果包含连字符或斜杠,我有一个基本的正则表达式模式可以将一个单词一分为二,因此我只得到连字符或斜杠之前的部分:

(.*(?<!\w)(CO-OP|CO|CO.)(?!\w).*)[-/](\s*\w+.*)
(.*?
但是,当提供
ABC CO-OP小学
时,此正则表达式错误地中断。此字符串正变成
ABC CO
。但是,如果我从交流发电机中删除CO,字符串将以其原始形式
ABC CO-OP小学
返回,这是正确的。此外,字符串
ARMSTRONG CO-OP小学/ECOLE Primarire ARMSTRONG COOPERATIVE
应在斜杠后不带字符串的情况下被拆分为
ARMSTRONG CO-OP小学


为什么
CO
在交流发电机中匹配并用于断开字符串?

您的问题是您的正则表达式要求字符串中有
-
\
,因此它迫使
ABC CO-OP小学
CO-OP
中的
-
上拆分。如果您:

  • 使regex的第二部分成为可选的
  • 将第一组末尾的
    *
    更改为惰性(
    *?
    );以及
  • 添加字符串起始和结束锚定
  • 您将获得您想要的结果:

    ^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$
    
    ^(.*?
    


    另外请注意,应该转义
    CO.
    中的

    您的问题是您的正则表达式要求字符串中有
    -
    \
    ,因此它强制
    ABC合作小学
    CO-OP
    中的
    -
    上拆分。如果您:

  • 使regex的第二部分成为可选的
  • 将第一组末尾的
    *
    更改为惰性(
    *?
    );以及
  • 添加字符串起始和结束锚定
  • 您将获得您想要的结果:

    ^(.*(?<!\w)(?:CO-OP|CO|CO\.)(?!\w).*?)(?:[-/](\s*\w+.*))?$
    
    ^(.*?
    


    还请注意,
    CO.
    中的
    应该转义。

    CO.
    应该是
    CO[.]
    CO\.
    但这不是您当前的问题。您可以使用控制动词跳过
    CO,CO,CO
    匹配。
    CO.
    应该是
    CO[.]
    CO\.
    但这不是您当前的问题。您可以使用控制动词跳过
    CO,CO,CO-op
    匹配项。