PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Perl
[问题] 正规表示法处理问题
楼主:
SmileU
(SmileU)
2013-09-29 01:23:31
大家好我是perl的新手,有个正规表示法的问题想请教~
现有一字串及三个数,以空白分隔,希望抓出第二个数,如下例希望抓出 1.5
hi_10_test 1.0 1.5 2.5
用以下程式码可以正确找到 $1=1.5
/_10.*\s\d.*\s(\d.*)\s\d.*/
但若写成这样时却会抓到最后一个数字,$1=2.5
/_10.*\s\d.*\s(\d.*)\s.*/
/_10.*\s\d.*\s(\d.*)/
我想可能是我误解某些符号的意思,想请教问题出在哪里呢?
谢谢大家
作者:
xatier
(一切重来就好了...)
0000-00-00 00:00:00
有看过 perldoc 的 retut 吗?
作者:
scwg
( )
2013-09-29 01:26:00
因为 perlre 默认是“贪心”的, 也就是第一个 \s\d.* 会尽可能 match 最多字符. 于是把 " 1.0 1.5" 都吃掉了, 然后括号对到第三个数字, \s 对到换行, .* 不用对到任何东西.建议你用更精确的 pattern, 如 (?:\d|\.)+ 而不是 \d.*
楼主:
SmileU
(SmileU)
2013-09-29 10:01:00
原来如此,我以为.*不会抓到空白的~非常谢谢你的回复:)
作者:
CindyLinz
(Cindy Wang)
2013-09-29 16:08:00
默认情况 . 会忽略的是换行欧~~
继续阅读
[问题] 同时开启多个档案并一次读一行
kezjiay
[问题] 运算问题
yowantl
Re: [问题] 当前目录下的所有档案内容
kockroach
Re: [问题] 档案内容取值问题
clanguage
Re: [问题] 当前目录下的所有档案内容
xatier
[问题] 档案内容取值问题
liuintel
[问题] 档案内容比对问题
liuintel
Re: [问题] 当前目录下的所有档案内容
CindyLinz
[问题] 当前目录下的所有档案内容
liuintel
[问题] 请问输入档案含变量
liuintel
Links
booklink
Contact Us: admin [ a t ] ucptt.com