Regex 正则表达式搜索模式选择:(This1)和(This2,但仅当找到This1时)
编辑:我相信我在这里寻找的解决方案是递归 关于这个 我试图找到一种方法,在文本的某个部分搜索标题,然后选择标题的某个部分,以及它下面的某个特定部分,这也需要一个小的条件搜索 文本格式如下所示:Regex 正则表达式搜索模式选择:(This1)和(This2,但仅当找到This1时),regex,recursion,find,Regex,Recursion,Find,编辑:我相信我在这里寻找的解决方案是递归 关于这个 我试图找到一种方法,在文本的某个部分搜索标题,然后选择标题的某个部分,以及它下面的某个特定部分,这也需要一个小的条件搜索 文本格式如下所示: Private Sub NAV_VE124_Click() 'Open the picture in its description field Call ShowPic(Me.NAV_VE124.Description) End Sub 我想选择VE124在其描述字段中打开图片 或者
Private Sub NAV_VE124_Click()
'Open the picture in its description field
Call ShowPic(Me.NAV_VE124.Description)
End Sub
我想选择VE124在其描述字段中打开图片
或者,更一般地说,我想要导航
和单击()
之间的所有内容,以及从'
到调用
的所有内容(不是换行符,因为有些描述有多行文本)
任何想法或帮助都将不胜感激。我有大约20000个这样的目录,所以我有点不知道怎么做。好的,我想这应该可以做到:
.*NAV_(.*)Click\(\)((?:\r\n\s*'(?:[^\r\n]*))*)(?:\r\n^((?!Sub NAV_).)*)*
如果我的任何假设不正确,请告诉我
- 在第一次导航之前,我们不关心这些东西(不过你可能想检查潜艇)
- *
- 我们想找到文字导航_
- 导航_
- 我们希望找到在Click()之前的任何内容并捕获它(我们可以查找任何不是空格的内容,因为Click()之后会有空格,稍后我们将匹配Click()
- ([^\s]*)
- 我们希望匹配Click()(您可能只希望匹配开口(如果有参数)
- 单击\(\)
- 现在事情变得有趣了,我将把这些片段分解
- (((?:\r\n\s*”(?:[^\r\n]*))*)
- \r\n\s*'此位获取换行符和开始注释的单引号
- (?:[^\r\n]*)此位获取所有注释文本(除换行符外的任何内容)
- 末尾的*允许多行注释
- 外圆括号表示我们感兴趣的部分
- (((?:\r\n\s*”(?:[^\r\n]*))*)
- 现在,我们只需忽略所有其他内容,直到下一个子导航(使用前瞻)
- (?:\r\n^((?!子导航)。)
编辑:完成了部分完整的正则表达式Hmm…虽然这似乎是正确的,但它似乎选择了完整的一行,包括
Private Sub
和Nav
,它也没有选择之后的文本。
确定。我已经使用记事本++进行了测试(使用“环绕”和“不”。匹配换行)然后用$1$2\r\n
替换完整的正则表达式,我会得到方法列表及其注释。可能换行符不匹配,或者您使用的工具与Notepad++不匹配。我会尝试Notepad++和\n而不是\r\n。此外……它仍然会匹配完整的行,包括Private Sub
,但是替换将我忽略这一点,只使用两组。