如何从带模式的格式化字符串中提取子字符串?

时间:2019-12-03 06:50:55

标签: python regex string

我想从格式化的字符串中提取特定的子字符串。例如,原始字符串为19592@click(className='android.widget.TextView',instance='15'):android.widget.TextView@"All"

我想从上面的字符串中提取"click""android.widget.TextView""15""android.widget.TextView@"All""。这是python regex可以解决的问题吗?我不确定应该使用哪些API。

2 个答案:

答案 0 :(得分:0)

这能回答您的问题吗? -https://www.w3resource.com/python-exercises/re/python-re-exercise-47.php

否则,您可以使用-https://docs.python.org/3/library/configparser.html

这里配置解析器将解析您的字符串,可以为您提供所有由定界符(@,=,:)分隔的值

答案 1 :(得分:0)

我知道正则表达式就是您要的,但是也许您可以使用效率更高的普通find

def find_between(s, first, last):
    first_pos = s.find(first)
    last_pos = s.find(last)
    if first_pos < 0 or last_pos < 0:
        return None
    first_pos = first_pos + len(first)
    return s[first_pos:last_pos]

然后:

s = '19592@click(className=\'android.widget.TextView\',instance=\'15\'):android.widget.TextView@"All"'
print find_between(s, "@", "(")
Out[0]: 'click'

print find_between(s, "className=", ",")
Out[18]: "'android.widget.TextView'"