正则表达式4-多行的诗歌

解析多行字符

有的时候我们需要在文本中解析,这个时候需要解决匹配多次和换行的问题,通过一个例子来看看吧。

愤怒的小鸟

我们看一下愤怒的小鸟里面的人物介绍:

【红色小鸟】(红火)
体型小,重量轻,攻击弱,无特效,可在滚动时消灭绿猪。适合攻击玻璃与木头,攻击混凝土较弱。(关卡1-1)
【蓝色小鸟】(蓝冰)
体型极小,重量轻,攻击弱,可以变成3个。攻击玻璃较强,攻击木头与混凝土较弱。(关卡1-10)
【黄色小鸟】(黄风)
体型较小,重量较轻,特效为加速,使用前攻击弱,使用后攻击中等。攻击木头较强,攻击玻璃与混凝土很弱。(关卡1-16)
【黑色小鸟】(黑炮)
体型较大,重量重,会爆炸,撞击力强,爆炸力弱,气浪强。适合攻击混凝土。(关卡2-5)
【白色小鸟】(白弹)
体型大,重量重,可以向下方下一个“炸蛋”,同时白鸟变小且被弹开。撞击力弱,“炸蛋”爆炸力大,气浪低,不适合攻击所有材料(“炸蛋”碰到任何物体都会立刻爆炸,除了碰到自己的小鸟或弹簧会弹开以外,都会立刻爆炸,弹开时撞击力较强,可对对方造成中等伤害!)。直接用身体适合攻击木板和玻璃。(关卡2-14)
【绿色小鸟】(绿颜)
体型中等,重量较轻,嘴大,可以回旋,使用特效前攻击弱,使用后攻击中等。适合攻击玻璃与木头,攻击混凝土较弱。(关卡6-5、关卡9-6)
【红色大鸟】(虹羽)
外形为红色小鸟的放大版,体型大,重量中等,无特效,攻击力极强,撞击地面时有弹性,弹起后碰到物体伤害力中等。(关卡9-1)
【橙色小鸟】(气腾)
攻击力中等,点击后会膨胀以弹开开附近的砖块。(关卡18-1)
【粉色小鸟】(粉黛)
攻击力低,点击后会把周围的东西弄上泡泡,使其向上移动。

我们的目标是

  • 找到所有小鸟的名字,也就是包含‘小鸟‘且在中括号中的鸟名字。
  • 前后没有其他字符

实战

先写一段测试程序吧:

str.match(/小鸟/);只能返回一个匹配

var str = 
'【红色小鸟】\n【蓝色小鸟】(蓝冰)\n【黄色小鸟】(黄风)\n【黑色小鸟】\n【白色小鸟】(白弹)\n【绿色小鸟】(绿颜)\n【红色大鸟】(虹羽) \n【橙色小鸟】(气腾)\n【粉色小鸟】(粉黛)';

str.match(/小鸟/);//返回["小鸟"]

我们加上修饰符g

str.match(/小鸟/g);

返回了["小鸟", "小鸟", "小鸟", "小鸟", "小鸟", "小鸟", "小鸟", "小鸟", "小鸟", "小鸟"]。还不错,但是我们要的是鸟名字。

加上名字,需要匹配汉子和【】

汉子的字符一般在[\u4e00-\u9fa5]。

str.match(/【[\u4e00-\u9fa5]+小鸟】/g);

返回["【红色小鸟】", "【蓝色小鸟】", "【黄色小鸟】", "【黑色小鸟】", "【白色小鸟】", "【绿色小鸟】", "【橙色小鸟】", "【粉色小鸟】"]
好像还不错,但是我们需要前后没有其他字符的小鸟名字。

加上^,$

str.match(/^【[\u4e00-\u9fa5]+小鸟】$/g);

这下返回null了

加上m

上面之所以返回null,是因为^$的作用加在了整个字符串的上面,也就是验证'【红色小鸟】\n【蓝色小鸟】(蓝冰)\n【黄色小鸟】(黄风)\n【黑色小鸟】(黑炮)\n【白色小鸟】(白弹)\n【绿色小鸟】(绿颜)\n【红色大鸟】(虹羽) \n【橙色小鸟】(气腾)\n【粉色小鸟】(粉黛)'整个字符串是否符合模式,显然是不符合的,我们希望对每一行进行匹配,m就是干这个的。

修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
str.match(/^【[\u4e00-\u9fa5]+小鸟】$/gm);

这下只返回了["【红色小鸟】", "【黑色小鸟】"],只有这两个是没有外号,前后都没有字符的,符合我们的要求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容