regex - grep regex忽略行尾的注释

标签 regex grep basic non-greedy powerbasic

我正在尝试通过大量旧的 PowerBASIC 源文件进行 grep 以搜索变量,但我无法获取 grep 以避免在末尾匹配对变量的引用-行评论。

例如:

ANGLE = 40    ' THIS IS A COMMENT ABOUT ANGLE'S VALUE
FOO = 3/ANGLE ' ANGLE CAN APPEAR ON RIGHT SIDE AS WELL
DELTA = 35    ' ANGLE AND DELTA AREN'T FRIENDS

最初我使用的是:

# grep "\bANGLE\b.*'" SRC_FILE.BAS

但是——除了忽略没有注释的行——它还会打印出根本不使用 ANGLE 的代码行(例如 DELTA 行) .这是因为这些行恰好在它们的注释(即 AREN'T)中也有一个撇号(')。

我想通过管道输出来删除我不想要的行:

# grep "\bANGLE\b" SRC_FILE.BAS | grep -v "'.*\bANGLE\b"

但不幸的是,它也删除了我确实想要的代码行,这些代码行恰好在他们的评论中有“ANGLE”。

如何让 grep 匹配涉及 ANGLE 的实际代码行并忽略那些在注释中匹配的行?

最佳答案

grep "^[^']*\bANGLE\b" SRC_FILE.BAS

这只匹配 ANGLE 左边的所有内容不包括 ' 的行。会出现类似jnylen's solution的问题如果字符串中有撇号。

关于regex - grep regex忽略行尾的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719105/

相关文章:

Java 正则表达式匹配器不匹配

linux - shell Linux : grep exact sentence with NULL character

linux - 列出 grep 找不到的字符串

basic - GWBASIC 文件我需要理解这段代码背后的方程式,但我无法解释它,我可以运行它

python - 如何重构 GWBASIC 代码中的 GOTO 语句?

reverse-engineering - 如何对 QuickBasic 应用程序进行逆向工程?

php - preg_match_all html 标签,双引号或单引号中的标签除外

javascript - 获取某些 CSS 属性的所有类名

regex - 如果在语句中找到单个单词,perl 正则表达式用于打印整个语句

vim - 如何将 grep -l 的文件名结果定向到 vim 编辑器