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

正则苦逼就救……

  •  
  •   YQtaku · 2012-12-27 03:12:54 +08:00 · 2136 次点击
    这是一个创建于 4360 天前的主题,其中的信息可能已经有所发展或是发生改变。
    jekyll是通过正则将

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

    将文章内容读出来吗?(即读取markdown文件,将首个匹配到的`---任何字符---`去掉?
    请问这个正则要怎么写囧,想了半天没想到……Orz
    7 条回复    1970-01-01 08:00:00 +08:00
    catfan
        1
    catfan  
       2012-12-27 05:25:44 +08:00
    /[\-]+\s+.*\s+[\-]+/i
    Catstyle
        2
    Catstyle  
       2012-12-27 09:29:22 +08:00
    @catfan
    楼主到底是要把`---任何字符---`去掉,还是将文章内容(some words.....)读出来?
    YQtaku
        3
    YQtaku  
    OP
       2012-12-27 11:34:22 +08:00
    @Catstyle 意思都差不多吧?读取整个文件
    - 將首个`---任何字符---`替换成空
    - 或者匹配首个`---任何字符---`以外的内容读出来
    for4
        4
    for4  
       2012-12-27 11:39:12 +08:00
    ---.*?---
    用单行懒惰模式
    YQtaku
        5
    YQtaku  
    OP
       2012-12-27 14:24:55 +08:00
    @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 15:10:48 +08:00
    @for4
    人家是多行的

    @YQtaku
    好吧, 我有强迫症,去掉和读取是不一样的...
    for4那个也可以,不过要在后面加上s就可以开启多行模式了
    即/---.*?---/s
    Catstyle
        7
    Catstyle  
       2012-12-27 15:12:15 +08:00
    @for4
    @YQtaku
    不好意思,表达有误,是DOTALL模式,即‘.’也可匹配换行符
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1100 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.