DDX<0&大买>=20&伍特买>=32.4&主动1>=0&0<=涨<9 EmEditor的正则表达...
创建于:2025年6月17日
创建于:2025年6月17日
DDX<0&大买>=20&伍特买>=32.4&主动1>=0&0<=涨<9
EmEditor的正则表达式
将变量部分替换为说明\1已是匹配
lag(\1,离板-1)
例如
0<=涨<9
要得到
0<=lag(涨,离板-1)<9
下面是一套在 EmEditor 里即可直接使用的“查找 / 替换”规则,专门把条件语句里的 变量 包一层
lag(变量, 离板-1)
,而数值、比较符号、已经包过的 lag()
等都保持不动。
(?<!lag\()(?<!\w)([A-Za-z\u4E00-\u9FA5_][A-Za-z0-9\u4E00-\u9FA5_]*)(?!\w)
片段 | 作用 |
---|---|
(?<!lag\() | 避免再次匹配已在 lag( 之后的名字(防止二次替换) |
(?<!\w) / (?!\w) | 约束左右边界不是字母/数字/下划线,确保只捕获完整变量 |
[A-Za-z\u4E00-\u9FA5_][A-Za-z0-9\u4E00-\u9FA5_]* | 把 英文、中文或下划线开头 的标识符认作变量(后续可跟字母、数字、中文、下划线) |
([…]) | 第 1 个捕获组,稍后用 \1 调入替换文本 |
如需更严格——只允许纯中文、纯英文字母等——可自行收紧字符集。
lag(\1,离板-1)
\1
就是上一步捕获到的变量名。
原文本 | 替换后 |
---|---|
0<=涨<9 | 0<=lag(涨,离板-1)<9 |
DDX<0 | lag(DDX,离板-1)<0 |
大买>=20 & 伍特买>=32.4 & 主动1>=0 | lag(大买,离板-1)>=20 & lag(伍特买,离板-1)>=32.4 & lag(主动1,离板-1)>=0 |
已包裹过的内容(如 lag(涨,离板-1)
)不会被再次替换,因为负向前瞻 (?<!lag\()
已经把它们排除在外。
提示
==
, !=
)时,无需改动本规则——因为我们只关心“完整变量”本身。祝替换顺利!