首页 > 解决方案 > 向后移动时如何在正则表达式模式中的空白处停止

问题描述

我有一系列看起来像这样的字符串:

mystring1='150 33 316LOC 300-750 22" Tet',                       
mystring2='134 ACV NOC 300-750 2-1/2" Tet'                                              

我需要编写一个模式,它会在'"' 符号之前获取任何东西。在我的最终输出中,'"' 也应该出现。我编写了一个适用于 mystring2 和 mystring3 的代码,但它对 mystring1 和 mystring4 失败了。

我附上了我尝试过的代码:

    mystring1='150 33 316LOC 300-750 22" Tet'
    attach='"'
    pattern_match = re.search('(?:\s+|$)\w*?.?\w*?.?\w*?\s?' \
    +''.join(attach.replace(' ','').split()[0]), mystring1)

    print(pattern_match.group())

使用上述代码,我得到 '300-750 22"' 作为输出。

如果我将 mystring1 替换为 '150 33 316L 300-750 INC" tet',我将得到 '300-750 INC"' 作为输出;

'150 33 316LOC 300-750 22" tet' 我的输出应该是 22" 和 '134 ACV NOC 300-750 3-1/2" tet' 的输出应该是 3-1/2" 等等。

标签: pythonregex

解决方案


评论中有解决方案re。对于这种简单的情况,无需re

lst = ['150 33 316LOC 300-750 22" Tet',
'134 ACV NOC 300-750 3-1/2" tet',
'150 33 316L 300-750 INC']

for s in lst:
    print([i for i in s.split() if i.endswith('"')])

印刷:

['22"']
['3-1/2"']
[]

re

for s in lst:
    print(re.findall(r'[^\s"]+"', s))

推荐阅读