我正在尝试使用elisp和正则表达式在C ++中获取类字段的类型和名称
该字段的类型为:
int foo_;
(输入:int
,姓名:foo
)
或
foo<bar> baz_bar_;
(键入:foo<bar>
,名称baz_bar
)
到目前为止,我得到了这两个正则表达式。
类型:
.+(?= .*_;)
命名
\w+(?=_;)
问题是elisp不支持预测。
我如何将这些正则表达式转换为与elisp兼容的正则表达式?
答案 0 :(得分:1)
如何编写一个正则表达式然后提取子匹配,而不是编写两个正则表达式?我认为这可以解决你的前瞻问题。并且,如果您需要在不同位置进行子匹配,那么只需完成整个匹配并仅提取您需要的部分。
所以像(未经测试):
\(.+\) +\(.+\)_;
然后要获取类型,使用(match-string 1)
或获取名称,请使用(match-string 2)
。
值得注意的是,一般来说,使用正则表达式无法匹配C ++成员。我相信声明器语法非常复杂,只能使用解析器来完成。