Regex 正则表达式和grep只匹配只有一位数或两位数的字符串

Regex 正则表达式和grep只匹配只有一位数或两位数的字符串,regex,grep,Regex,Grep,我需要提取一个字符串,其中只有一个或两个数字。我的文件(测试)看起来像 test1correct test12something test123wrong 在上面的例子中,我只想grep 测试1纠正并测试12某事 我试过这个 grep“test[0-9]{1,2}”测试,但它给出了所有3行代码 使用:grep“测试[0-9]{1,2}[^0-9]”尝试以下方法: test[0-9]{1,2}[A-Za-z]+ 使用lookaheads和lookbehinds,您可以指定“正好一个数字”或“正

我需要提取一个字符串,其中只有一个或两个数字。我的文件(测试)看起来像

test1correct
test12something
test123wrong
在上面的例子中,我只想grep 测试1纠正并测试12某事

我试过这个 grep“test[0-9]{1,2}”测试,但它给出了所有3行代码

使用:
grep“测试[0-9]{1,2}[^0-9]

尝试以下方法:

test[0-9]{1,2}[A-Za-z]+

使用lookaheads和lookbehinds,您可以指定“正好一个数字”或“正好三个数字”或任何内容。这正好是一个数字:

echo 'WB123_4' | grep -Po '(?<![[:digit:]])([[:digit:]]{1})(?![[:digit:]])'
Result: 4
echo 'WB123_4' | grep -Po '(?<![[:digit:]])([[:digit:]]{3})(?![[:digit:]]).+(?<![[:digit:]])([[:digit:]]{1})(?![[:digit:]])'
Result: 123_4
echo'WB123_4'| grep-Po'(?
echo'WB123_4'| grep-Po'(?cat tst--tst文件包含以下数据
1.
0
操作人员
4.
5.
五,

cat tst|grep[0-9]——当我使用它时,只返回1

一,


如何对tst文件中的所有数字进行grep处理?

有人能解释一下这个正则表达式吗?解释:
grep“^test[0-9]\{1,2}[^0-9]”test.txt,它可以在任何地方工作。基本上,您只尝试提取行的
起始词
test
的行,即
^test
(请参见
^
字符,表示给定行的起点/字符),然后搜索数字
[0-9]\{1,2\}
(0到9之间,需要在
{
}
之前加反斜杠)然后为了避免使用3位数字,1位或2位数字后的下一个字符可以是数字以外的任何字符,因此,
[^0-9]
,这意味着不是数字(在大括号中使用
^
[
]
)。这不提供问题的答案。您可以查看类似问题的答案,或参考页面右侧的相关和链接问题以查找答案。如果您有相关但不同的问题,请创建一个新问题,并包含指向此问题的链接以帮助提供上下文。请参阅:。
echo 'WB123_4' | grep -Po '(?<![[:digit:]])([[:digit:]]{3})(?![[:digit:]]).+(?<![[:digit:]])([[:digit:]]{1})(?![[:digit:]])' | sed -r -e 's/[^[:digit:]]+/ /'
Result: 123 4