Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 在句号之间提取字符串,除非CO_Python_Regex - Fatal编程技术网

Python 在句号之间提取字符串,除非CO

Python 在句号之间提取字符串,除非CO,python,regex,Python,Regex,我正在努力使用正则表达式来提取句号之间的字符串的一部分,但是如果句号前面有特定的字母(例如示例中的CO),则忽略它。我们可以假设相关块始终以“LTD”结尾 案例1: string = "FREDS CHIP SHOP. S & B SERVICES CO. & SONS LTD. 1-12 THE STREET" 我想要:“S&B服务有限公司” 案例2: string = "SOME TEXT. BUSINESS NAME LTD. 1-12 THE STREET" 我想

我正在努力使用正则表达式来提取句号之间的字符串的一部分,但是如果句号前面有特定的字母(例如示例中的CO),则忽略它。我们可以假设相关块始终以“LTD”结尾

案例1:

string = "FREDS CHIP SHOP.  S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"
我想要:
“S&B服务有限公司”

案例2:

string = "SOME TEXT.  BUSINESS NAME LTD. 1-12 THE STREET"
我想要
“商业名称有限公司”

案例3:

string = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"
我想要
“简单商业名称有限公司”

我目前有:

#!/usr/bin/python
import sys
import re

vnumber_name = "FREDS CHIP SHOP.  S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"
#vnumber_name = "SOME TEXT.  BUSINESS NAME LTD. 1-12 THE STREET"
#vnumber_name = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"

def test(vnumber_name):
    #ltd = re.search(r'.+\sLTD[.]?', vnumber_name)
    ltd = re.search(r'[.?][\s]{1,2}(?:[^.]+|(?!CO.))LTD[.]?', vnumber_name)
    if ltd:
        print "got it: " + ltd.group(0)
    else:
        print "nothing"

test(vnumber_name)
这是不对的


我可以创建一些if子句,但如果只使用一行regex,那就太好了。

您可能想豁免多个缩写,因此这里有一个更灵活的方法,使用“负lookback”:从字符串的开头匹配到不在特定字符串后面的下一个句点(
CO
CORP
),非贪婪的
*?
(后跟一个句点)使您匹配第一个这样的句点

.*?(?<!..CO|CORP)\.
*?(?

这将允许您正确地将字符串拆分为“句子”。如果你只对以有限公司结尾的案例感兴趣,那么你可以选择那些。

非常感谢。我没有意识到有负面的回顾。谢谢你的解释。欢迎你。但是,除非你只打算匹配你作为例子给出的三个案例,否则你应该重新考虑你接受的答案:它与我举的例子不起作用你是对的!好的,我需要再考虑一下。谢谢你的提示。使用(或改编)有什么问题吗我的解决方案?没有-但我无法让它在脚本上工作。我得到:sre_常量。错误:向后看需要固定宽度的模式,但它在这里工作正常,所以我正在尝试解决它。