2024-09-25 14:31:51 发布
网友
我正在使用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一直和整条线匹配。有什么建议吗?你知道吗
你可以想出:
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。你知道吗
您可以使用正面展望:
\d{5}.*(?=\))
此外,您还可以:
(\d{5})(.*(?=\())(.*)(?=\))
然后,您可以用back-reference 1获取5位字符串,用back-reference 3获取内部字符串
或者你可以更进一步:
(\d{5})(.*(?=\())(\((\s{1,}\b|\b))(.*?(?=(\s{1,},|,)))(\s{1,},|,)(\s{1,}\b|\b)(.+)(?=\s{1,}\)|\))
然后你可以得到以下信息:
5位字符串:背面参考1
左侧内部值:后参考5
右侧内部值:后参考9
观察
Regex with test strings
import re data = '"99233 (I21.4,I50.23), 93010 (I21.4,I50.23)"' print re.findall(r'\d{5}.*\(.*?\)', data)
你可以想出:
这将使用正面的后视,并在空间上进行分割。
见a demo on ideone.com。你知道吗
您可以使用正面展望:
\d{5}.*(?=\))
此外,您还可以:
(\d{5})(.*(?=\())(.*)(?=\))
然后,您可以用back-reference 1获取5位字符串,用back-reference 3获取内部字符串
或者你可以更进一步:
(\d{5})(.*(?=\())(\((\s{1,}\b|\b))(.*?(?=(\s{1,},|,)))(\s{1,},|,)(\s{1,}\b|\b)(.+)(?=\s{1,}\)|\))
然后你可以得到以下信息:
5位字符串:背面参考1
左侧内部值:后参考5
右侧内部值:后参考9
观察
编辑:发现一个错误,因此删除了链接。这是新的:
Regex with test strings
相关问题 更多 >
编程相关推荐