如何编写Python正则表达式匹配含d/dR分式的特定格式字符串
解决方案
你正则里的xx占位部分可以替换为[^|]+?实现匹配,原理是两个|为固定分隔符,中间的运算式不会出现|字符,用这个规则匹配不会越界。
如果不需要单独提取中间的运算式,直接用下方正则即可:
r"<\s*(\d+)\s*\|\s*[^|]+?\s*\|\s*(\d+)\s*>"
如果需要单独捕获d/dR这类中间内容,给匹配部分加个分组括号就行:
r"<\s*(\d+)\s*\|\s*([^|]+?)\s*\|\s*(\d+)\s*>"
匹配逻辑说明
[^|]:匹配除竖线|以外的任意单个字符+?:非贪婪匹配,避免把中间运算式后面的空格也包含到匹配结果里,和前后的\s*配合可以精准拿到运算式本身
测试示例
import re target_text = "< 0 | d/dR | 1>" pattern = r"<\s*(\d+)\s*\|\s*([^|]+?)\s*\|\s*(\d+)\s*>" result = re.match(pattern, target_text) if result: print(result.group(1)) # 输出 0 print(result.group(2)) # 输出 d/dR print(result.group(3)) # 输出 1
内容的提问来源于stack exchange,提问作者saya
相关产品推荐
相关产品推荐

