V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YQtaku
V2EX  ›  正则表达式

正则苦逼就救……

  •  
  •   YQtaku · 2012 年 12 月 27 日 · 2589 次点击
    这是一个创建于 4774 天前的主题,其中的信息可能已经有所发展或是发生改变。
    jekyll是通过正则将

    ---
    layout: post
    ---
    #content
    some words.....

    将文章内容读出来吗?(即读取markdown文件,将首个匹配到的`---任何字符---`去掉?
    请问这个正则要怎么写囧,想了半天没想到……Orz
    7 条回复    1970-01-01 08:00:00 +08:00
    catfan
        1
    catfan  
       2012 年 12 月 27 日
    /[\-]+\s+.*\s+[\-]+/i
    Catstyle
        2
    Catstyle  
       2012 年 12 月 27 日
    @catfan
    楼主到底是要把`---任何字符---`去掉,还是将文章内容(some words.....)读出来?
    YQtaku
        3
    YQtaku  
    OP
       2012 年 12 月 27 日
    @Catstyle 意思都差不多吧?读取整个文件
    - 將首个`---任何字符---`替换成空
    - 或者匹配首个`---任何字符---`以外的内容读出来
    for4
        4
    for4  
       2012 年 12 月 27 日
    ---.*?---
    用单行懒惰模式
    YQtaku
        5
    YQtaku  
    OP
       2012 年 12 月 27 日
    @catfan 谢谢喵大~ It works~

    @for4 这个没有效果=。=

    preg_replace('/[\-]+\s+.*\s+[\-]+/i', '', "---\nkey:value\n---\n#content\nsome words\n---test"); // it works.

    preg_replace('/---.*?---/', '', "---\nkey:value\n---\n#content\nsome words\n---test"); // it doesnot work.

    看来要正式学一下正则了QAQ
    Catstyle
        6
    Catstyle  
       2012 年 12 月 27 日
    @for4
    人家是多行的

    @YQtaku
    好吧, 我有强迫症,去掉和读取是不一样的...
    for4那个也可以,不过要在后面加上s就可以开启多行模式了
    即/---.*?---/s
    Catstyle
        7
    Catstyle  
       2012 年 12 月 27 日
    @for4
    @YQtaku
    不好意思,表达有误,是DOTALL模式,即‘.’也可匹配换行符
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3902 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:09 · PVG 13:09 · LAX 21:09 · JFK 00:09
    ♥ Do have faith in what you're doing.