忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 1316 | 回复: 19

请教一个正则的写法 [复制链接]

论坛徽章:
0
发表于 2017-08-18 15:23 |显示全部楼层
我想提取一个文件中所有类似  _("ssggsas")  的字符,也就是以 _(" 开头,")结尾,现在用 /_\("(.*?)"\)/i 可以提取到标准字符,但是遇到里面包含有双引号或者括号就出错了。

比如: _("ssg\")gsas") 就出错了,在前面就截断了。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2017-08-19 01:20 |显示全部楼层
  1. /_\(" ( [^\\] | \\" )+? \)"/xms
复制代码

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2017-08-19 08:54 |显示全部楼层
感觉你是要保持ssggsas这个队形的
  1. / _\(" (s[\\"()]*){2} (g[\\"()]*){2} s[\\"()]* a[\\"()]* s[\\"()]* "\) /ix
复制代码

论坛徽章:
0
发表于 2017-08-20 07:59 |显示全部楼层
stanley_tam 发表于 2017-08-19 08:54
感觉你是要保持ssggsas这个队形的

谢谢。不过还是不行

论坛徽章:
0
发表于 2017-08-20 08:06 |显示全部楼层
cnncc 发表于 2017-08-20 07:59
谢谢。不过还是不行

用过 gettext 多语言的应该知道, gettext 是用 _("英文") 这样的标签把需要翻译的字符包含起来。

我的应用场景就是把模板文件里面的所有多语言标签提取出来,写入一个 po 文件,也就是 以 _("  开头,以  ")  结尾,中间包含任意字符

我现在就是遇到  _("example Loadfile(\"test.txt\"); abcdefgsgdfgg") 就出错

标准的 _("example") 就没问题。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2017-08-20 09:38 |显示全部楼层
回复 5# cnncc
那就直接这样试试
  1. /_\(" .* "\)/ix;
复制代码

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2017-08-20 12:43 |显示全部楼层
不知我的写法有没有试过,其实处理这种计算机语言,要先构建语法描述,因为有许多嵌套结构,还有许多例外。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-08-20 13:53 |显示全部楼层
本帖最后由 sunzhiguolu 于 2017-08-20 13:54 编辑

回复 5# cnncc
举个例子? 否则只能是猜来猜去,文件中的内容到底是个啥情况?



论坛徽章:
0
发表于 2017-08-22 23:57 |显示全部楼层
我感觉重点是如何匹配里面那个双引号围起来的字符串,这个字符串里面可以有用\作escape的双引号。

或许可以用negative look behind来做,比如这样

  1. /( _\( ".*?(?<!\\)" \) )/x
复制代码

论坛徽章:
0
发表于 2017-08-25 11:53 |显示全部楼层
104359176 发表于 2017-08-20 12:43
不知我的写法有没有试过,其实处理这种计算机语言,要先构建语法描述,因为有许多嵌套结构,还有许多例外。 ...

谢谢,我在4楼的其实就是回复你的,只是点错了楼层!

3楼的朋友理解错我的意思了,并不是要保持规则,我是随便输入的字符。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP