猿问

Go Negative LookAhead 替代方案

我想知道是否有任何方法可以正则表达式匹配包含 qcc 但后面没有 -c 的字符串?例如以下两个将匹配:

  1. sdfsd/sdfs/d qcc -lang-c++ -Vgcc_ntoaarch64le -shared -o /dfgdfg/dfg/dfg/d -Wl -Wl,--gc-sections /fgdfgdfg/dfgdfgd/fdgd

  2. qcc -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


慕莱坞森
浏览 137回答 2
2回答

胡说叔叔

匹配这样的选项字符串永远不会真正健壮,但是如果您知道可能的输入字符串(即知道选项的顺序和/或选项永远不会合并),它应该相当简单。不确定我是否会打扰正则表达式。你可以这样做:if strings.Contains(s, "qcc") && !strings.Contains(s, " -c ") { do something }然后您不必担心选项的顺序,尽管您确实需要知道选项 -c 将始终以某种方式呈现(例如,周围有空格)。

当年话下

Go regex (RE2) 不支持使这变得容易的断言。因此,必须分别处理两个正则表达式条件:gcc存在 :/\bgcc\b/这-c不遵循下游: /\bgcc\b.+?\b-c\b/验证匹配逻辑 if #1 and not #2成功的地方。
随时随地看视频慕课网APP

相关分类

Go
我要回答