免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3376 | 回复: 13
打印 上一主题 下一主题

[文本处理] 一个略困难的正则表达式 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-09-24 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-04 14:42 |只看该作者 |倒序浏览
本帖最后由 与天笑 于 2014-03-04 16:23 编辑

起因是这样的,一个文档翻译的MM说想在翻译工具里面设定一个表达式,然后翻译工具能过滤掉符合用户设置的正则表达式匹配的内容。

文档的内容是这样的形式的:
            IPV4: "IPv4",
            IPV6: "IPv6",
            INTERNET_IPV4: "Internet IPv4",
            INTERNET_IPV6: "Internet IPv6",
            MAC_ADDRESS: "MAC Address",
            IP_ADDRESS: "IP Address",
            SUBNET_MASK: "Subnet Mask",
            DEFAULT_GATEWAY: "Default Gateway",
            PRIMARYDNS: "Primary DNS",
            SECONDARYDNS:"Secondary DNS",
            CONNTYPE:"Connection Type",
(也可能多行合并成一行)

现在想要过滤掉的是不需要翻译的部分,就是双引号之外的内容IPV4: "IPv4",
我试了挺久,只搞了一个匹配大部分的,最后一个没匹配上的表达式:
  1. "?(([^"]*)(?=".*"))"?
复制代码
请问可有有更好的表达式来完成任务??

其实现在她们是接受了这样带瑕疵的结果的,但是!感觉没完全匹配上这个表达式就是不完美的。。。

-----------
都理解错了,只要一个正则表达式匹配双引号之外的内容和双引号,不是什么perl awk来处理的或者抓取的。
人家是做翻译的, 哪会这么高大上的东西,这都是给程序员用的~
简单将输入一个正则表达式,用于编辑的工具就锁定并且不显示匹配的文本,避免误改。
所以,就是一个正则表达式。就像站长工具里面的正则测试工具,纯正则,不是sed awk perl里带的具有社会主义特色的正则。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2014-03-04 14:43 |只看该作者
翻译工具用什么语言开发的?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2014-03-04 14:45 |只看该作者
回复 2# Shell_HAT


    这个我就不知道了,她们对文档做check,然后翻译语言,把翻译好后的内容发回来,用什么工具倒不清楚

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2014-03-04 14:49 |只看该作者
把需要翻译的过滤出来可以吗?
  1. $ grep -oP '(?<=").*(?=")' i
  2. IPv4
  3. IPv6
  4. Internet IPv4
  5. Internet IPv6
  6. MAC Address
  7. IP Address
  8. Subnet Mask
  9. Default Gateway
  10. Primary DNS
  11. Secondary DNS
  12. Connection Type
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2014-03-04 14:50 |只看该作者
回复 1# 与天笑

How about this

# awk -F'"' '{print $2}' FILE
IPv4
IPv6
Internet IPv4
Internet IPv6
MAC Address
IP Address
Subnet Mask
Default Gateway
Primary DNS
Secondary DNS
Connection Type

   

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-09-24 06:20:00
6 [报告]
发表于 2014-03-04 14:54 |只看该作者
回复 4# yestreenstars


    不行的,就是要在翻译工具里用正则表达式(显示上)过滤掉这些内容,这样修改就需要关注那些需要翻译的部分

    如果可以单独抓取出来处理那倒是简单了。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-03-04 14:58 |只看该作者
回复 6# 与天笑

还是搞不懂需求~
   

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2014-03-04 15:04 |只看该作者
回复 7# yestreenstars


    就是用一个正则表达式选取出双引号以外包括双引号的内容,没其他的了~~~

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
9 [报告]
发表于 2014-03-04 15:10 |只看该作者
回复 8# 与天笑

这样吗?
  1. $ sed -r 's/[^"]+//2' i
  2.             IPV4: "",
  3.             IPV6: "",
  4.             INTERNET_IPV4: "",
  5.             INTERNET_IPV6: "",
  6.             MAC_ADDRESS: "",
  7.             IP_ADDRESS: "",
  8.             SUBNET_MASK: "",
  9.             DEFAULT_GATEWAY: "",
  10.             PRIMARYDNS: "",
  11.             SECONDARYDNS:"",
  12.             CONNTYPE:"",
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2014-03-04 15:14 |只看该作者
回复 1# 与天笑

How about those pattern

1. perl -lape 's/^[^"]+"|"[^"]+$//g' FILE

2. perl -lape 's/^[^"]+"(.+)"[^"]+$/$1/' FILE

IPv4
IPv6
Internet IPv4
Internet IPv6
MAC Address
IP Address
Subnet Mask
Default Gateway
Primary DNS
Secondary DNS
Connection Type


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP