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

正则表达式区分逻辑运算与头文件包含中的<符号

解决方案

针对你的需求,我们可以通过负向预查来区分需要添加空格的<和>符号,避免修改预处理指令(如#include<...>)和成对无空格包裹的符号(如a<b>)。

处理 < 符号的正则表达式

使用以下正则匹配需要添加前后空格的<:

(?<!#\s*include\s*)<(?!\s)(?!\S+>)

替换为:<(前后带空格)

正则解释:

  • (?<!#\s*include\s*):负向预查,排除#include相关场景(允许#和include、include和<之间有任意空格);
  • <:匹配目标符号;
  • (?!\s):负向预查,确保<后面没有空格(避免重复添加);
  • (?!\S+>):负向预查,排除<后紧跟一串非空格字符再到>的情况(如a<b>里的<)。

处理 > 符号的正则表达式

使用以下正则匹配需要添加前后空格的>:

(?<!<\S+)(?<!\s)>(?!\s)

替换为:>(前后带空格)

正则解释:

  • (?<!<\S+):负向预查,排除>前是<加一串非空格字符的情况(如a<b>里的>);
  • (?<!\s):负向预查,确保>前面没有空格;
  • >:匹配目标符号;
  • (?!\s):负向预查,确保>后面没有空格。

测试你的示例

将上述正则应用到你的输入文本:
原输入:

#include<stdio.h>
a<b
a<b>
a<v and c>d

处理后结果:

#include<stdio.h>
a < b
a<b>
a < v and c > d

完全符合你的期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:15:40