有没有一种方法可以使用特殊字符进行查找和替换,从而使任何字符都可以位于其位置?
我的意思是说我有以下文本:
setI0100(mds3a1.getI0100().toString());
setI0200(mds3a1.getI0200().toString());
setI0300(mds3a1.getI0300().toString());
setI0400(mds3a1.getI0400().toString());
setI0500(mds3a1.getI0500().toString());
setI0600(mds3a1.getI0600().toString());
setI0700(mds3a1.getI0700().toString());
setI0800(mds3a1.getI0800().toString());
setI0900(mds3a1.getI0900().toString());
setI1100(mds3a1.getI1100().toString());
setI1200(mds3a1.getI1200().toString());
setI1300(mds3a1.getI1300().toString());
我想使用类似 (mds3a1.getI***().toString()); 的东西来替换,在初始 ( 之后替换上面所有行的结尾。
其中 * 可以等于任何字符。这样我就可以替换上面所有行的结尾,即使它们不一定完全相同。其中一行看起来像:
Before:
setI0100(mds3a1.getI0100().toString());
After:
setI0100
我在其他程序中看到过类似的功能,但我不太清楚这种行为的具体含义。
编辑: 最后我正在寻找正则表达式,正如@DavidPostill 在下面指出的那样。
为了完成我想要做的事情,我最终得到了以下结果:
find: (\(mds3a1.getJ)....+(().toString\(\)\);)
replace:
这将使我保留直到第一行(但不包括第一行)的每一行文本(
对于任何想要在 Sublime Text 中使用正则表达式的人来说,这里是我发现的一个很好的资源。https://github.com/dmikalova/sublime-cheat-sheets/blob/master/cheat-sheets/Regular%20Expressions.cheatsheet
答案1
看来 MattDMo 的答案不是获得所需结果的正确模式。以下是我为更优雅的解决方案所做的工作:
打开 Sublime Text 2
粘贴块:
setI0100(mds3a1.getI0100().toString());
setI0200(mds3a1.getI0200().toString());
setI0300(mds3a1.getI0300().toString());
setI0400(mds3a1.getI0400().toString());
setI0500(mds3a1.getI0500().toString());
setI0600(mds3a1.getI0600().toString());
setI0700(mds3a1.getI0700().toString());
setI0800(mds3a1.getI0800().toString());
setI0900(mds3a1.getI0900().toString());
setI1100(mds3a1.getI1100().toString());
setI1200(mds3a1.getI1200().toString());
setI1300(mds3a1.getI1300().toString());
查找 > 替换 ( CTRL+ H)
启用正则表达式按钮(Alt+ R)
找什么:\(.*
用。。。来代替: [这里没有字符]
按“全部替换”
完毕
结果就是你所要求的:
Before:
setI0100(mds3a1.getI0100().toString());
After:
setI0100
正则表达式细分:
\(
匹配并退出(
角色。
.
匹配任意单个字符。
*
匹配前一个字符 0 次或多次。
答案2
在“查找”对话框中打开正则表达式搜索,并使用以下模式:
^(.*?)(?=\()
它从行首开始 ( ^
),然后捕获任意字符 ( (.*?)
) 直到非捕获正向前瞻 ( (?=\()
)。