我正在尝试编写正则表达式以仅提取数字120068018
!false!|!!|!!|!!|!!|!120068018!|!!|!false!
我对正则表达式比较陌生,我发现这是一项艰巨的任务。
我尝试使用该模式,因为数字始终以1200
开头'/^1200+!\$/'
但这似乎不起作用。
答案 0 :(得分:0)
这是您需要的正则表达式:
/[0-9]+/
[0-9] 匹配0到9之间的任何数字
+ 符号表示 1次或更多次。
如果您想获得以1200开头的任何数字,那么它将是
/1200[0-9]*/
我在这里使用 * ,因为它允许零或更多。否则,将不会捕获数字1200.
如果你想捕获(提取)字符串,请用括号括起来:
/(1200[0-9]*)/
答案 1 :(得分:0)
使用此:
/1200\d+/
\ d是一个匹配任何数字的元字符。
你的正则表达式不起作用,因为:
答案 2 :(得分:0)
如果您的号码始终以1200
开头,则可以
/1200\d*/
这匹配以1200
开头的字符串加上“跟随多少数字”。根据您使用的正则表达式的“方言”,您可能会找到
/1200[0-9]*/
更健壮;或
/1200[[:digit:]]*/
更“可读”
任何这些都可以用括号“捕获”。同样,根据方言,您可能需要或不需要逃避这些(在前面添加\
)。实施例
echo '||!!||!!||!!120012345||##!!@@!!||' | sed 's/^.*\(1200[0-9]*\).*$/\1/'
产生
120012345
就像你想要的那样。说明:
sed stream editor command
s substitute
^.* everything from start of string until
\( start capture group
1200 the number 1200
[0-9]* followed by any number of digits
\) end capture
.*$ everything from here to end of line
/\1/ and replace with the contents of the first capture group