【问题标题】:Sublime Text Regex Search for alphanumeric string, not working..崇高文本正则表达式搜索字母数字字符串,不起作用..
【发布时间】:2017-05-31 18:48:48
【问题描述】:

我正在尝试替换项目中数百个页面中使用的通用主题:

<div id="PageTitle"> (Page title as a string) </div>

每个页面的标题都不同。我想用

替换它
    <div class="row">
        <div class="col-md-12 col-sm-12">
            <h3><?= $pageTitle?></h3>
        </div>
    </div>

我尝试使用&lt;div id="PageTitle"&gt;/^\w+$/&lt;/div&gt;&lt;div id="PageTitle"&gt;"^[a-zA-Z0-9_]*$"&lt;/div&gt; 进行搜索,但没有成功。有什么想法吗?

【问题讨论】:

    标签: regex search sublimetext3 sublimetext


    【解决方案1】:

    你快到了。看起来你从其他地方得到了模式。 ^$ 是开始和结束锚点,因此它们与输入的开始和结束相匹配,因此您可能应该摆脱它们。

    接下来,如果您的页面标题仅包含字母数字字符(也没有空格),那么\w 就可以了,否则您可能想要使用.

    <div id="PageTitle">\w+<\/div>
    

    对于包含任何字符的标题:

    <div id="PageTitle">.+?<\/div>
    

    这是demo

    希望这会有所帮助!

    【讨论】:

    • 正是我所需要的。谢谢!
    • .+ 并不总是有效!它不包括换行符等字符。真的更好用&lt;div id="PageTitle"&gt;[\s\S]*?&lt;\/div&gt;
    • 是的@Adam,@Slim 有一个有效点。如果您的页面标题 div 将跨行,则必须将 . 替换为 [\s\S]。如果不是,那么上面的模式就可以了!
    【解决方案2】:

    也试试这个,我觉得它很严格:

    <div id="PageTitle">(?:(?!<\/div>).)+<\/div>
    

    甚至:

    <div id="PageTitle">[\s\S]*?<\/div>
    

    【讨论】:

    • 与惰性量词相比,温和的贪婪将是昂贵的,特别是因为 OP 有数百个文件。尽管时间差可以忽略不计,但这种模式根本就没有效率。阅读when not to use tempered greedy token
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多