【发布时间】:2017-02-06 01:25:36
【问题描述】:
struct mbuh
(
lineshg = 0,
tres = "text",
fn track all:#() =
(
local c -- clone
local lpoint = [0,0,0] -- previous point created
local ccoll = #() -- array for created objects
local prev = [0,0] -- var for alt distance changing
),
fn listzfun trs:123 x:#() =
(
obj = snapshotasmesh a
min_vz = max_vz = in coordsys world (getvert obj 1).z
min_vx = max_vx = in coordsys world (getvert obj 1).x
min_vy = max_vy = in coordsys world (getvert obj 1).y
)
)
fn brung man: =
(
)
作为上面的例子,我想找到单词“struct xx”和“fn xxx”,但只有“fn xxx”在结构范围内而不是在它之外[“fn brung xxx”],我使用这个正则表达式来找到它
^.*?(\bstruct\s*\w+\b)|^.?(\bfn\b+[\w\s:#()""]*)
但它在结构范围内外搜索所有 fn 单词,所以问题是我如何才能找到仅在上面示例中的结构范围内的单词 fn xxx [fn track xxx 和 fn listzfun xxx] ?
非常感谢。
【问题讨论】:
-
虽然可以使用正则表达式来做到这一点,但仅使用正则表达式就很难做到圆括号/括号平衡。如果不出意外,我建议先对此进行另一种形式的解析。
-
但这很难做到吗?作为附加信息,结构内部的每个“fn”都以逗号分隔,而其外部的“fn”不以逗号分隔。谢谢
标签: regex