Notepad ++中的搜索模式

时间:2016-09-20 10:44:49

标签: regex notepad++ text-editor

1)首先,我想搜索带有

等模式的文本
   app(abs(something),abs(something))

在使用Notepad ++的大文本中,下面显示的文本示例:

app(abs(any length of characters here),abs(any length of characters here)),
tapp(abs(any length of characters here),abs(any length of characters here)),
app(abs(any length of characters here),app(any length of characters here)),
app(abs(any length of characters here),some(any length of characters here)),
app(abs(any length of characters here)) ,abs(any length of characters here))

当我使用" app(abs((。?)),abs((。?)))"搜索它在上面的示例中找到第一行和第二行。 第二行不是我要搜索的。 我的表情有什么问题?

2)如果可能的话,我想在每个" abs"之后打开和关闭括号()。应该匹配,例如

   "app(     abs(..(..)..),abs(..(..(...)..)..)   )"

但不是

   "app(abs((), abs())"

其中第一个abs有不匹配的括号。

请提出一些建议!

提前致谢

3 个答案:

答案 0 :(得分:3)

是的,您应该将Search Mode切换到Regular expression(位于Find对话框的底部)并使用正则表达式作为模式。

假设模式中的星号表示任何单个字符,则应将*替换为.(匹配正则表达式语法中的任何单个字符),并在每个括号前添加\()是特殊字符,必须使用\进行转义。因此,你会得到:

str1\(str2\(.....\),str2\(........\)\)

为了减少丑陋,可以用.{5}

替换5个点
str1\(str2\(.{5}\),str2\(.{8}\)\)


回答第一部分更新的问题

Actualy,上面的模式并没有给出你描述的结果。 .?匹配零或一个任何字符,括号被解释为特殊符号。因此,您的模式匹配appabsX,abs之类的字符串。

它应该像这样修改:

app\(abs\((.*)\),abs\((.*)\)\)
  

它在上面的示例中找到第一行和第二行

实际上,它会找到t,之间第二行的一部分,并且它是正确的行为。如果你想忽略这种情况,你应该以某种方式指定你正在搜索的字符串的开头。一些例子:

^匹配行的乞讨:

^app\(abs\((.*)\),abs\((.*)\)\)

(\ s +)匹配至少一个空格字符

(\s+)app\(abs\((.*)\),abs\((.*)\)\)

此外,最好通过将?放在*之后启用lazy matching,如下所示:

^app\(abs\((.*?)\),abs\((.*?)\)\)

答案 1 :(得分:2)

  

在Notepad ++中可以吗?

是的,可以使用正则表达式。

  

怎么做?

查看该链接:Regular Expressions Notepad

如果您想了解有关学习,构建和测试正则表达式的更多信息,请查看该链接:

RegExr

答案 2 :(得分:0)

这样的事情:

^app\(abs\((.*?)\),abs\((.*?)\)\)
搜索窗口中的

复选框“。匹配新行”需要取消选中。

Screenshot http://image.prntscr.com/image/6dfda1d0bc4544919903fb0ee85432b4.png