我需要在~
和^
之间给我一个字符串
我有一个这样的字符串:
~~~~ 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 ]
答案 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']