如何从右侧开始在算术运算符处仅拆分一次字符串?
解决方法
别用split了,直接用正则捕获组拆分更合适——毕竟split会把你需要保留的运算符直接丢掉。
用正则精准匹配最后一个运算符与末尾数字的分界,直接提取两部分内容:
import re equation_text = "123+456-789" # 正则模式:捕获到最后一个运算符为止的所有内容,再捕获末尾的纯数字 match_result = re.search(r'(.*[+\-/*%])(\d+)$', equation_text) if match_result: prefix_part = match_result.group(1) # 得到 "123+456-" suffix_num = match_result.group(2) # 得到 "789" print(prefix_part) print(suffix_num)
逻辑说明
(.*[+\-/*%]):匹配任意内容直到最后一个算术运算符(+、-、*、/、%),这部分就是你要的前半段(\d+)$:匹配字符串末尾的连续数字,确保只提取最后一段纯数字$锚定字符串结尾,不管前面有多少运算符,都不会影响最后一段数字的提取
如果担心输入字符串末尾不是数字(比如格式不合法),if match_result的判断可以避免报错。
内容的提问来源于stack exchange,提问作者Canofeggs 5410
相关产品推荐
相关产品推荐

