问候.
这么简单的问题让我难过.这里的人非常乐于助人.
我正在尝试匹配包含一些固定文本和随机数字的字符串.
echo blah blah abc123 | grep -o abc
abc
echo blah blah abc123 | grep -o abc[0-9]
abc1
echo blah blah abc123 | grep -o abc[0-9]+
echo blah blah abc123 | grep -o "abc[0-9]+"
echo blah blah abc123 | grep -o "abc[0-9]*"
abc123
echo blah blah abc123 | grep -o abc[0-9]{3}
echo blah blah abc123 | grep -o "abc[0-9]{3}"
Run Code Online (Sandbox Code Playgroud)
*运算符(匹配零次或多次)是唯一一个按照我的预期工作的运算符.
为什么+运算符(匹配1次或更多次)不匹配?
为什么特定重复计数运算符{3}不匹配?
我在Ubuntu 10.10下的bash shell中运行这些示例,如果它有所不同的话.
非常感谢.
当你逃避特殊字符时它们都有效:
$ echo blah blah abc123 | grep -o "abc[0-9]\+"
abc123
$ echo blah blah abc123 | grep -o "abc[0-9]\{3\}"
abc123
Run Code Online (Sandbox Code Playgroud)
未转义,正则表达式正在寻找文字,+或者{正如你所推断的那样.
至于为什么你必须保持一个非*转义,但你必须逃脱+,我不确定.
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |