【发布时间】:2011-03-19 03:36:36
【问题描述】:
有没有一种简单的方法来捕获类型?我似乎无法做一些基本的事情,比如并排使用变量表达式,比如$mapType$$mapEnd$ 来做一个简单的替换。这可能有什么原因吗?也就是说,如果我有一个表达式,比如.*\s*.*abc,并且我将它分成两个变量,.*\s* 和.*abc,则表达式不匹配任何文本。可能出了什么问题?
Example template:
$var1$ = $impl$
Example second template:
$var1$ = $type$$implEnd$
如果$impl$ 是一个完整的正则表达式,将$type$ 和$implEnd$ 与匹配的正则表达式的一半放在一起会导致模式不匹配。可能出了什么问题?
我正在尝试进行这种转换:
List<String,Object> list = new ArrayList<String,Object>();
List<String,Object> list = Lists.newArrayList();
显然,我需要以某种方式捕获“数组”,以及只捕获那些没有参数的类型。
【问题讨论】:
-
SSR 匹配每个变量的一种或多种语言结构,它不会将多个变量($mapType$$mapEnd$)捕获到类型引用(或任何语言词法)中。如果我理解正确,您需要匹配 List $variable$ = new $ListType$() 并相应地替换它。你可能会发现这篇文章很有用jetbrains.com/idea/documentation/ssr.html
-
这几乎可以工作,但它不保留泛型参数之间的逗号。您链接的文章非常模糊和高级。
-
您可以根据需要指定多个类型参数,例如 Map。我相信第一个模式中丢失的分号是一个错误。顺便说一句,这篇文章充满了具体的例子(在撰写本文时收集:)
-
啊,允许某些类型的任意数量的参数会很好。哦,好吧。
-
@nicity:发表您的评论作为答案,我会接受。
标签: java regex replace intellij-idea structural-search