javasgl

step by step


  • Home

  • Archives

  • Tags

  • Categories

  • About

  • Search

中文正则匹配

Posted on 2017-05-07 | In notes | Visitors

在某些场景下,需要使用正则对文本中的中文进行匹配。之前就在一个python的项目中需要对中文进行相应的匹配。
实际需求: 要求匹配非中文内容。
中文的unicode编码范围为 u4e00 到 u9fa5。

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re

group = re.search(ur'([^\u4e00-\u9fa5])','1中文en汉字')

if group:
print grou.groups()

Tips:

1.正则非匹配: ^
2.正则范围匹配: [a-b]
3.正则捕获: ()
4.python2 中 u 表示 unicode的字符串, python3 已经全部使用unicode来表示字符串
5.python 中 r 表示 row string,使用原始字符串,不进行转义

shell脚本修改环境变量

Posted on 2017-04-28 | In Linux | Visitors

有时候编写go程序的时候需要将当前目录加到系统GOPATH中,不然就得将代码放置在已有的GOPATH之下。所以一般习惯在项目根目录执行创建一个shell脚本来动态的修改GOPTAH。
脚本很简单,代码如下:

1
2
3
#/bin/sh
CURRENT=`pwd`
export GOPATH="${GOPATH}:${CURRENT}"

因为是shell脚本,所以就习惯性的执行了如下命令:

1
2
sh env
echo $GOPATH

期望GOPATH中已经追加上了当前目录,然而事与愿违,并没有什么效果,GOPATH仍然是之前的内容。

原因:
使用 sh 命令来执行shell脚本的时候,脚本真正是在sh创建的子shell中执行,所以当sh进程完成的时候并没有修改系统变量,所以通过执行 sh env 来修改系统变量是无效的。子shell和父shell彼此无法使用对方的变量,子shell对环境变量的修改也不会影响父shell。
需要使用 source env来执行,source命令执行脚本的时候,是在source当前shell中执行的,并不会创建子shell。

参考: 用source 执行脚本和用sh 执行脚本有什么区别

Alfred 编写 workflow

Posted on 2017-03-26 | In tools | Visitors

Alfred 的一个亮点功能就是workflow。通过workflow用户可以很容易的扩展alfred的功能,
而开源的优秀的workflow也有很多,不过如果找不到自己满意的workflow,可以自己动手编写workflow。自己动手,丰衣足食!
之所以重复造轮子的原因的是因为这个datetie-format-converter 转换的时间是按照UTC-GMT时间来算的,所以对于中国来说,属于东八区,所以就写了一个php版本的自己使用。
这里只是简单记录下自己开发的一个Unix时间戳转换的workflow的过程,详细教程请自行google或者参考 这篇教程.

Read more »

解决MacOS Sierra 升级后原有的ssh private key无法通过验证

Posted on 2017-03-19 | In os | Visitors

周末正好有空,就准备把mac pro 升级到最新的sierra版本,毕竟已经落后于apple官方两个比较大的版本了。

升级过程很简单,也很顺利。直接通过appstore上在线更新即可,下载完成之后安装向导步骤完成即可。

直到….我发现公司测试环境502之后,想要登陆到机器上去处理一下的时候,我的ssh key竟然毫无征兆的被deny了!升级之前能登陆服务器,升级之后无法登陆。

Read more »

Linux zgrep使用笔记

Posted on 2017-03-17 | In Linux | Visitors

grep 可以用来搜索文件内容,而基于grep的 zgrep这可以用来在压缩包中搜索内容而不需要事先解压文件.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@yourdream ~]# cat test.go
package main
import (
"fmt"
)
func main(){
fmt.Println("Hello Golang!");
}

[root@yourdream ~]# tar zcf test.tar.gz test.go

[root@yourdream ~]# file test.tar.gz
test.tar.gz: gzip compressed data, from Unix, last modified: Fri Mar 17 17:23:09 2017

[root@yourdream ~]# zgrep "fmt" test.tar.gz
Binary file (standard input) matches

[root@yourdream ~]# zgrep -a "fmt" test.tar.gz
"fmt"
fmt.Println("Hello Golang!");

[root@yourdream ~]# tar -tvf test.tar.gz
-rw-r--r-- root/root 81 2017-03-17 17:18 test.go

[root@yourdream ~]# tar -rvf test.tar.gz test/
test/
test/a.php

[root@yourdream ~]# tar -tvf test.tar.gz
-rw-r--r-- root/root 81 2017-03-17 17:18 test.go
drwxr-xr-x root/root 0 2017-03-17 17:50 test/
-rw-r--r-- root/root 1127 2017-03-17 17:50 test/a.php

[root@yourdream ~]# zgrep -aHn "Hello" test.tar.gz
test.tar.gz:6: fmt.Println("Hello Golang!");
test.tar.gz:16:echo 'Hello php';
  • 注意需要加上 -a 参数,让其二进制文件当做文本处理
  • tar -u -r 先压缩包中添加文件
  • tar -H 显示文件名
  • tar -n 显示行号
1…101112
javasgl

javasgl

A journey of a thousand miles begins with single step

60 posts
13 categories
94 tags
RSS
GitHub Wechat
© 2020 javasgl
Powered by Hexo
Theme - NexT.Mist
0%