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

2024-09-28 22:16:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

案例1:

string = "FREDS CHIP SHOP.  S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"

我要:"S & B SERVICES CO. & SONS LTD."

案例2:

^{pr2}$

我要"BUSINESS NAME LTD."

案例3:

string = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"

我要"SIMPLE BUSINESS NAME LTD."

我目前有:

#!/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就可以了。在


Tags: thenamerestreetbusinesssimple案例regex
1条回答
网友
1楼 · 发布于 2024-09-28 22:16:17

您可能希望排除多个缩写,因此这里有一个更灵活的方法,使用“negative lookbehind”:从字符串的开始到下一个句点(本例中,CO或{})匹配字符串的下一个句点。非贪心的.*?(后面跟一个句点)使您匹配到第一个这样的句点。在

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

这将允许您正确地将字符串分解为“句子”。如果你只对以LTD结尾的那些感兴趣,你可以选择它们。在

相关问题 更多 >