当前面的单词是特定的(有时是可变的)时,用正则表达式选择单词

时间:2016-01-31 17:23:49

标签: regex

defineas时,我正在尝试突出显示(或找到)任何前面有另一个单词的单词define,以及要突出显示的另一个特定单词(define MyFile as File)基本上,我需要查找因其他正则表达式搜索而找到的单词,但只能单独定位每个单词。

例如,拥有以下字符串:

define

在这种情况下,使用正则表达式语句\b-?define\b搜索MyFile。我还需要找到define ,如果它直接位于as之前。另外,只有当 直接在一个单词之前,<{1}}时才需要找到MyFile,在这种情况下define,前面有MyFile,并且这种情况一直持续着。

如何做到这一点?我已经搞砸了很多,以找到如何正确地突出显示as,但没有任何成功。至于File和{{1}}的具体递归搜索,我很无能为力。

请记住,所有正则表达式都必须单独,因为我会将其用作Sublime Text自定义语法高亮匹配查找器。

3 个答案:

答案 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中)由该组的转义号码(代表索引)引用。

我相信它的捕获群体是您正在寻找的概念,而不是任何特定的正则表达式。