当define
为as
时,我正在尝试突出显示(或找到)任何前面有另一个单词的单词define
,以及要突出显示的另一个特定单词(define MyFile as File
)基本上,我需要查找因其他正则表达式搜索而找到的单词,但只能单独定位每个单词。
例如,拥有以下字符串:
define
在这种情况下,使用正则表达式语句\b-?define\b
搜索MyFile
。我还需要找到define
,如果它直接位于as
之前。另外,只有当 直接在一个单词之前,<{1}}时才需要找到MyFile
,在这种情况下define
,前面有MyFile
,并且这种情况一直持续着。
如何做到这一点?我已经搞砸了很多,以找到如何正确地突出显示as
,但没有任何成功。至于File
和{{1}}的具体递归搜索,我很无能为力。
请记住,所有正则表达式都必须单独,因为我会将其用作Sublime Text自定义语法高亮匹配查找器。
答案 0 :(得分:1)
define\s([\w]+)\sas\s([\w]+)$
此正则表达式代码将捕获定义后的所有单词,由空格分隔,所有单词后面也用空格分隔 检查此正则表达式:https://regex101.com/r/aQ0yO0/2
答案 1 :(得分:0)
由于没有数据外观的背景......这是一种天真的做法,但它非常直观。但是,它没有使用正则表达式。其他示例是使用正则表达式的好方法。
{{1}}
答案 2 :(得分:-1)
正则表达式总是包含&#34;定义&#34;同样。诀窍是使用捕获组并在之后引用它们。如何做到这一点的具体方式取决于&#34;味道&#34;你的正则表达式。
由于我不熟悉Sublime的正则表达式,我只想在sed中展示一个例子:
$ sed -e 's/define \([A-Za-z]*\)/include \1/g' <<< "define MyFile as File"
include MyFile as File
此示例将所有&#34; define&#34; s替换为&#34; include&#34; s - 并添加由组内的所有内容捕获的内容(正则表达式[A-Za-z]*
in这个案例)。不太有用,但希望解释:)
捕获组由转义括号表示,并且(在sed中)由该组的转义号码(代表索引)引用。
我相信它的捕获群体是您正在寻找的概念,而不是任何特定的正则表达式。