0

我想使用支持正则表达式的程序搜索 250 个文件,但我不知道如何构建查询。

这是一个示例文件:

//////////////////////////////Crown Area Effects///////////////////////////////

// Super Spies
DbAreaEffectInfo SuperSpies
{
    name = text_carea_sprspies_name
    desc = text_carea_sprspies_desc
    effects = [
        // scale sabotage super-effect duration

        EffectDuration {
            range = SpaceTime

            player = Self
            // which effect's duration is this scaling
            effect = "SabotageBuilding"
            scale = 1.25
        }

        EffectDuration {
            range = SpaceTime

            player = Self
            // which effect's duration is this scaling
            effect = "ImprovedSabotageBuilding"
            scale = 1.25
        }

        EffectSpeed {
            range = Global
            mask = Spies
            player = Self
            // 25% faster
            scale = 1.25
        }

        EffectMaxHitPoints {
            range = Global
            mask = Spies
            player = Self
            // 25% more hit points
            scale = 1.25
        }

        EffectVisualGlow {
            range = Global
            mask = Spies
            player = Self
            GlowType = Good
            OwnerOnly = true
            Icon = icon_crown_superspies_s
            Tooltip = text_carea_sprspies_name
            VTooltip = vtt_power_unitinfo_SuperSpies
        }

        EffectIsACrown {
            range = Global
            mask = Spies
            player = Self

            crownType = kCrownType_Imperial
        }
    ]
}

我想寻找这样的模式:

<ANYTHING, EVEN NULL>//<ANYTHING, EVEN NULL><MyString><AnyThing, EVEN NULL>

例如:

<anything>//<anything>super<anything>

这将产生以下结果:

 // scale sabotage super-effect duration

什么正则表达式查询会给我想要的结果?

提前感谢您的时间和精力!

编辑:

我正在使用有效文件搜索 - http://www.sowsoft.com/search.htm

4

3 回答 3

1

标准正则表达式通配符是.(一个字符)。任意重复由 表示*。所以这应该为你解决问题:

~//(.*)super(.*)~

根据您的正则表达式引擎,您可能能够/必须省略 delimiters ~。此外,由于.默认情况下不匹配换行符,因此第二个通配符将始终位于行尾,并且super必须与 . 出现在同一行//

于 2012-10-13T22:36:45.467 回答
0
^\s*//.*?(STRINGYOUWANTTOSEARCHFOR).*$

假设 pcre/perlre 风格。

在 perlre 中,使用

^\s*//.*?(\QSTRINGYOUWANTTOSEARCHFOR\E).*$

以防止您正在寻找的字符串中出现奇怪的解释

其他正则表达式引擎/风格有不同的语法,请参阅http://www.regular-expressions.info/reference.html进行比较

于 2012-10-13T22:41:23.063 回答
0

直接的解决方案是使用

grep pattern /path/to/files*

在一个壳里。

你可以下载unxutilsgrep for windows。

于 2012-10-13T22:35:13.033 回答