regex - 如何获取最后一个字符为 A 或 B 且倒数第二个字符为 1-360 的字符串的最后 2 个字符? (正则表达式 GREP)

标签 regex language-agnostic

我并不是真的每天都使用正则表达式,我对此还是个新手。

例如,我有这些字符串,这是字符串的格式:

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/

相关文章:

ruby - `scan' : invalid byte sequence in UTF-8 (ArgumentError)

php - 在逗号分隔列表中搜索字符串

language-agnostic - URL 中特定保留字符背后的基本原理是什么?

python - 如何高效地查找文档中的短语

language-agnostic - 为什么散列函数应该使用质数模数?

正则表达式匹配所有以 n 个字符开头的序列

java - 如何在特定字符串之后获得更多组匹配?

regex - Xcode 正则表达式搜索 - 查找项目中的所有强制解包

language-agnostic - 哪些编程工具还没有编写?

algorithm - 使用 Dijkstra 找到最小生成树?