我并不是真的每天都使用正则表达式,我对此还是个新手。
例如,我有这些字符串,这是字符串的格式:
APPLE20B50A
苹果30A60B
APPLE12B5B
APPLE360A360B
苹果56B
基本上,我想获取最后一个字母(A 或 B)和最后一个字母之前的数字(或字母之后/数字之前的数字,这也是 A 或 B)。还有像APPLE56B这样中间没有数字+字母的格式。
预期输出:
50A
60B
5B
360B
56B
我试过 grep -o '.\{2\}$'
但它只输出最后 2 个字符:
0A
0B
5B
0B
6B
很明显,它对数字来说不是动态的。任何帮助将不胜感激。
最佳答案
grep -o
确实可以使用正确的模式
grep -oP '[0-9]+[AB]$'
使用 Perl,
perl -nle'print $& if /[0-9]+[AB]$/'
perl -nle'print for /([0-9]+[AB])$/'
在所有情况下,您都可以通过 STDIN 或传递文件名作为参数来提供输入。
关于regex - 如何获取最后一个字符为 A 或 B 且倒数第二个字符为 1-360 的字符串的最后 2 个字符? (正则表达式 GREP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74794402/