我试图确定正确的RegEx语法来执行以下操作.我在一个文件中有一行,我希望在第一次出现空格之前匹配每个字符.
例如在行中:
123abc xyz foo bar
我不清楚为什么以下:
^.*\s
Run Code Online (Sandbox Code Playgroud)
匹配单词栏中的b:
123abc xyz foo
在我看来,\ s是贪婪的,但我不确定我怎么能让它不贪婪,只是匹配123abc我尝试了各种形式的这个正则表达式,试图使它不贪婪^.*\s?
或类似的东西,但是我没有成功.先感谢您
Igo*_*bin 20
那是因为.
可以是任何角色,包括空间.你可以试试
^[^ ]*\s
Run Code Online (Sandbox Code Playgroud)
要么
^\S*\s
Run Code Online (Sandbox Code Playgroud)
代替.
这是一个贪婪的回复.但你也可以非贪婪:
^.*?\s
Run Code Online (Sandbox Code Playgroud)
你错了是你放?
错了地方.
例子:
$ echo aaaa bbb cccc dddd > re.txt
$ cat re.txt
aaaa bbb cccc dddd
$ egrep -o '^.*\s' re.txt
aaaa bbb cccc
$ egrep -o '^\S*\s' re.txt
aaaa
$ egrep -o '^[^ ]*\s' re.txt
aaaa
Run Code Online (Sandbox Code Playgroud)
用perl进行非贪心搜索:
$ perl -ne 'print "$1\n" if /^(.*?)\s/' re.txt
aaaa
Run Code Online (Sandbox Code Playgroud)