我使用python并尝试将以下字符串分成两个字符串:
'"99233 (I21.4,I50.23), 93010 (I21.4,I50.23)"'
stringA = "99233 (I21.4,I50.23),"
stringB = "93010 (I21.4,I50.23)"
我在python中使用以下表达式:
pattern = re.compile('\d{5}.*[),|"|\n]')
所以我做了以下事情:
但我的RE一直与整条线相匹配。有什么建议吗?
答案 0 :(得分:1)
你可以提出:
import re
string = '99233 (I21.4,I50.23), 93010 (I21.4,I50.23)'
parts = re.split(r'(?<=\)),\ ', string)
print(parts)
# ['99233 (I21.4,I50.23)', '93010 (I21.4,I50.23)']
这使用正面的后视并在空间上分裂 请参阅a demo on ideone.com。
答案 1 :(得分:1)
import re
data = '"99233 (I21.4,I50.23), 93010 (I21.4,I50.23)"'
print re.findall(r'\d{5}.*\(.*?\)', data)
答案 2 :(得分:0)
你可以使用积极的前瞻:
\d{5}.*(?=\))
另外你可以做到这一点:
(\d{5})(.*(?=\())(.*)(?=\))
然后你可以抓住带有反向引用1的5位数字符串,带有反向引用3的内部字符串
或者你可以更进一步:
(\d{5})(.*(?=\())(\((\s{1,}\b|\b))(.*?(?=(\s{1,},|,)))(\s{1,},|,)(\s{1,}\b|\b)(.+)(?=\s{1,}\)|\))
然后你可以得到以下结果:
5位数字符串:反向引用1
左手内部值:反向引用5
右手内部值:反向引用9
观察