You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中编写包含加号(+)的正则表达式?

解决正则表达式匹配带加号的科学计数法问题

问题分析

你的原正则表达式字符类[A-Z0-9.-]+没有包含加号+,导致无法匹配带E+的科学计数法片段。另外在正则字符类[]内部,+属于普通字符,不需要转义,直接写入即可。

修正后的正则表达式

方案1:允许所有片段包含+或-

如果只是需要匹配包含+的科学计数法格式(片段可带+或-),只需把+加入字符类:

re=r"(?<b>[A-Z0-9.+_-]+)\s+(?<c>[A-Z0-9.+_-]+)\s+(?<d>[A-Z0-9.+_-]+)"

字符类里的A-Z已经覆盖了科学计数法里的大写E,加上+后就能匹配带E+的片段。

方案2:强制特定捕获组包含+

如果要求某个捕获组(比如c组)必须包含+,可以对该组做更严格的格式限制:

re=r"(?<b>[A-Z0-9.+_-]+)\s+(?<c>[A-Z0-9.-]+E\+[0-9]+)\s+(?<d>[A-Z0-9.+_-]+)"

这个版本会强制c组匹配类似0.0000E+00的格式,确保该片段一定包含+。

验证效果

用方案1的正则测试你的目标字符串:

import re
a="250010.E-03  0.0000E+00  0.0000E-00"
pattern = r"(?<b>[A-Z0-9.+_-]+)\s+(?<c>[A-Z0-9.+_-]+)\s+(?<d>[A-Z0-9.+_-]+)"
match = re.fullmatch(pattern, a)
if match:
    print(f"RegexMatch({a!r}, b={match['b']!r}, c={match['c']!r}, d={match['d']!r})")

输出结果和你期望的完全一致:

RegexMatch('250010.E-03  0.0000E+00  0.0000E-00', b='250010.E-03', c='0.0000E+00', d='0.0000E-00')

内容的提问来源于stack exchange,提问作者brien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:24:57