1
046569 2013-01-16 14:27:14 +08:00 2
试试这个,希望对你有用.
http://deerchao.net/tutorials/regex/regex.htm#ad |
3
haiyang416 2013-01-16 15:02:38 +08:00 9
学习一样新事物时应该从最基本的地方开始,不要被正则的各种符号所迷惑,正则的规则其实很简单。
我们通常使用正则来描述语言,比如“hello”,因此你可以把正则看成一个集合,例如:空集合为{}(一般记作ε),一个字母集合为{a}。 正则是最基本的运算规则只有三条: 1.并运算,记作 X|Y,你可以理解为加法。例如a|b所表示的集合为{a,b} 2.连接运算,记作XY,你可以理解为乘法。例如X为a|b,Y为c|d,那么XY的集合为{ac,ad,bc,cd} 3.克林闭包运算(Kleene Closure),记作X*,你可以理解为零个或者多个X连接。例如a*所表示的集合为{ε,a,aa,aaa,......} 现在你已经了解正则的全部规则了,那些复杂的规则你可以看作是语法糖,都可以用这三个规则来描述。举几个例子: 1.hello,即5个字母的连接运算:hello 2.[ab],即为ab两个字母的并运算:a|b 3.[0-9],即为并运算0|1|2|3|4|5|6|7|8|9 4.A?,即为并运算A|ε 5.A+,即为AA* |
4
adspe 2013-01-16 15:29:45 +08:00
上Youtube看吧。一语点醒梦中人。
|
5
jkeylu 2013-01-16 15:34:25 +08:00 1
|
6
jiangpeng 2013-01-16 15:39:31 +08:00
余晟的《正则指引》不知如何
http://book.douban.com/subject/10591096/ |
7
xavierskip 2013-01-16 15:41:12 +08:00 1
|
8
n00b1 OP @xavierskip 这个图真太好了,感谢~
|
9
n00b1 OP @046569
@haiyang416 @adspe @jkeylu @jiangpeng @xavierskip 不知道有没有‘反向生成正则’的服务呢?给一段目标文档内容,同时给出希望从其中找到的内容,改服务自动生成正则 |
10
bitsmix 2013-01-16 16:13:48 +08:00
买本猫头鹰就够了
|
11
bitsmix 2013-01-16 16:17:56 +08:00
刚看视频。。用python做入门讲解。。怎么说呢……
视频内容里面掺杂太多了和 正则 本身无关的内容了(比如 python 的re里面 有什么方法) 还是买本猫头鹰看吧 http://book.douban.com/subject/2154713/ |
12
nervouna 2013-01-16 16:30:15 +08:00
和我一样的初学者,只需要了解正则解决问题的基本思路,语法知道个大概就可以了。等到真正要用的时候,再具体问题具体分析,网上找找例子,看看别人的思路是怎样的。这样可能会更好。
|
13
Sunyanzi 2013-01-16 17:18:17 +08:00
正则基本就是死记硬背 ... 学基础的匹配半小时真就够了 ...
正则里所有比较麻烦的东西都以 (? 开头 ... 比如 Assertions 和比较复杂的 Subpatterns 这一类东西 ... 看到就直接跳过好了 ... 先学会简单匹配然后在使用中再慢慢看都来得及 ... 另外你提到了反向正则生成服务 ... 我琢磨了一下要不要自己写一个 ... 但有个严重的问题是你要提供怎样的输入呢 ..? 比如你输入了一段很长的文字 ... 例如 abcdefgh123456 ... 然后你希望从中匹配到 cde ... 我生成的正则一定是 /cde/ ... 如果你希望描述匹配 d 到 1 之间这整段内容 ... 那么你要如何描述 ..? /d.*1/ 这样么 ..? 这本身就已经是正则了 ... 或者我提供语法类似 ... d[anything][anylength][word|numberic][length=1] 然后我把它翻译成 /d.*[a-z0-9]{1}/ 这样你觉得有意义么 ..? |
14
jimbinc 2013-01-16 17:21:17 +08:00
正则指引,一本搞定
|
15
ThunderEX 2013-01-16 17:23:29 +08:00 via Android
不可能有这种服务吧。
对正则来说,怎么匹配不是问题。真正的问题是怎么排除。 |
16
pepsin 2013-01-16 17:27:39 +08:00
请用www.rubular.com自己多试验。Mac下也可使用Reggy做试验。
|
17
ericFork 2013-01-16 17:55:26 +08:00
|
18
sivacohan 2013-01-16 18:23:08 +08:00 via Android
正则也要看看(),这里面有个东西叫反向引用。
python 的re模块提供了?P <name >,使用groupdics,可以获得一个字典,很好用。 加上@haiyang416 的,基本正则就可以用了,只不过写的比较长而已。 如果对正则的性能有需求,建议看看精通正则表达式,和你使用正则时候的语言。 |
20
Mutoo 2013-01-16 20:00:06 +08:00
|
21
mozillazg 2013-01-17 09:34:34 +08:00
RegexBuddy( http://www.regexbuddy.com/ ):调试正则的利器
|
22
wuhaochen999 2019-02-08 21:39:00 +08:00
我看你不是想学 regular expression 吧 你是想学 PCRE 这两个区别很大
|
23
notgood 2019-03-21 19:35:34 +08:00
@Sunyanzi 两位大佬, 为什么我的正则死活匹配不上, 调试也找不出问题, 求指点 谢谢
log 如下 : Aug 15 08:59:07 <hostname> ss-server[1382]: 2018-08-15 08:59:07 ERROR: failed to handshake with <HOST>: authentication error 正规表达式如下: failregex = ^\w+\s+\d+ \d+:\d+:\d+\s+%(__prefix_line)sERROR:\s+failed to handshake with <HOST>: authentication error$ @mozillazg |