Python-get字符之间的字符串

时间:2016-08-03 17:14:24

标签: python

我需要在~^之间给我一个字符串 我有一个这样的字符串:

~~~~ ABC ^ DEF ^ HGK > LMN ^  

我需要用python获取它们之间的字符串 我试过这个:

import re
target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
matchObj = re.findall(r'~(.*?)\^', target)
print matchObj 

但结果是:

['~~~ ABC ']

我的期望是:

[ABC , DEF , HGK , LMN ]

[^ABC , ^DEF , ^HGK , LMN ]

4 个答案:

答案 0 :(得分:0)

我不确定究竟是什么结果,但也许这个?

find_element

答案 1 :(得分:0)

没有正则表达式:

>>> "".join([x for x in target if x.isalpha() or x == ' ']).split()
['ABC', 'DEF', 'HGK', 'LMN']

这会占用空格和字母字符并创建一个新字符串,然后将其拆分为列表中的单词

这是我在python 3命令行中的确切代码:

>>> target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
>>> xx = "".join([x for x in target if x.isalpha() or x == ' ']).split()
>>> xx
['ABC', 'DEF', 'HGK', 'LMN']
>>> 

答案 2 :(得分:0)

你使用延迟量词的想法是好的,但这仍然不一定能给你最短的匹配 - 只有正则表达式引擎当前位置的最短匹配。如果要禁止开始/结束分隔符成为匹配项的一部分,则需要从有效字符列表中明确排除它们。否定的character class在这里派上用场。

target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
matches = re.findall(r'~([^~^]*)\^', target)
print matches 

答案 3 :(得分:0)

这是我的解决方案:

您的意见:

In [12]: target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '

' '替换所有符号或分隔符并拆分结果

In [13]: b = re.sub(r'[^\w]', ' ', target).split()

In [14]: b
Out[14]: ['ABC', 'DEF', 'HGK', 'LMN']