我有一些Java代码
@Subscribe
public void catchEvent(SomeEvent
我想将它与〜/ .ctags中的类似内容进行匹配
--langdef=javaspring
--langmap=javaspring:.java
--regex-javaspring=/@Subscribe(\s)*([a-z ]+)\s([a-zA-Z]*)\(([a-zA-Z]*)/\3-\4/
这应该生成类似“catchEvent-SomeEvent”的内容,但不会。如果我删除@Subscribe和public void之间的换行符,它将得到它。
@Subscribe public void catchEvent(SomeEvent
rm -rf tags && ctags -R . && cat tags|grep Subs
catchEvent-SomeEvent PathToMyFile.java /^@Subscribe public void catchEvent(SomeEvent event) {$/;" r
我什至尝试使用这样的行的开始/结束
--regex-javaspring=/^\s*@Subscribe[a-z \s]+\s([a-zA-Z]+)\(([a-zA-Z]+).*$/@Subscribe \1 \2*/
您是否知道我可以使用当前的ctag实现来做到这一点。我是在做错什么还是ctags现在不支持多行正则表达式。
谢谢!
最佳答案
使用_multiline = N
[jet@localhost ~]$ cat foo.java
@Subscribe
public void catchEvent(SomeEvent
[jet@localhost ~]$ cat s.ctags
--langdef=javaspring
--langmap=javaspring:.java
--regex-javaspring=/@Subscribe(\s)*([a-z ]+)\s([a-zA-Z]*)\(([a-zA-Z]*)/\3-\4/{_multiline=2}
[jet@localhost ~]$ ~/var/ctags/ctags --options=./s.ctags --language-force=javaspring -o - foo.java
catchEvent-SomeEvent foo.java /^public void catchEvent(SomeEvent$/;" r
关于regex - CTAG的多行正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28262647/