我想知道是否有任何方法可以正则表达式匹配包含 qcc 但后面没有 -c 的字符串?例如以下两个将匹配:sdfsd/sdfs/d qcc -lang-c++ -Vgcc_ntoaarch64le -shared -o /dfgdfg/dfg/dfg/d -Wl -Wl,--gc-sections /fgdfgdfg/dfgdfgd/fdgdqcc -lang-c++ -Vgcc_ntoaarch64le -shared -o /dfgdfg/dfg/dfg/d -Wl -Wl,--gc-sections /fgdfgdfg/dfgdfgd/fdgd但以下不会:/sdfsd/sdf/sd/fs/df/dsfds/ qcc -lang-c -Vgcc_ntoaarch64le -c -o /sdfsd/dfsdfsd/sdfsd -Wall -fmessage-length=0 -Wformat-security -g -Os -D_FORTIFY_SOURCE=2 -Wno-error=format-security -DFORD_SECTION -DFNV2LOG_DEBUG -std=gnu11 dir.c
2 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
匹配这样的选项字符串永远不会真正健壮,但是如果您知道可能的输入字符串(即知道选项的顺序和/或选项永远不会合并),它应该相当简单。不确定我是否会打扰正则表达式。你可以这样做:
if strings.Contains(s, "qcc") && !strings.Contains(s, " -c ") { do something }
然后您不必担心选项的顺序,尽管您确实需要知道选项 -c 将始终以某种方式呈现(例如,周围有空格)。
当年话下
TA贡献1890条经验 获得超9个赞
Go regex (RE2) 不支持使这变得容易的断言。
因此,必须分别处理两个正则表达式条件:
gcc
存在 :/\bgcc\b/
这
-c
不遵循下游:/\bgcc\b.+?\b-c\b/
验证匹配逻辑 if #1 and not #2
成功的地方。
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消