regex - 正则表达式捕获具有奇数个字符的十六进制数字

标签 regex pcre

我有一个逗号分隔的十六进制数字列表,如下所示,

    aaffd,123,1,d3213,aaa,f
    aaa,dd,1234,d,c

我想要 pcregrep 的正则表达式仅匹配包含十六进制数字的行,其中每个十六进制数字都有奇数个字符。

应该匹配:

    aaffd,123,1,d3213,aaa,f
    1
    2,345,1

不应匹配:

    ad,ad
    1,23,1,333

我正在尝试使用这个正则表达式 ([0-9a-f],?|((?:(?:[0-9a-f]{2})+[0-9a-f]),?))+

但它也会捕获不必要的行。如链接所示 https://regex101.com/r/uvJcbD/5

如何仅捕获包含十六进制数字的行,其中每个十六进制数字具有奇数个字符?预先感谢您。

最佳答案

这可以完成工作:

^(?=[0-9a-f,]+$)[^,](?:[^,]{2})*(?:,[^,](?:[^,]{2})*)*$

DEMO

关于regex - 正则表达式捕获具有奇数个字符的十六进制数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032112/

相关文章:

c++ - 非捕获正则表达式结合字符串

php - 如果大于零则匹配数字

php - 用于验证 ip-list 中的 ip-range 的正则表达式

regex - 在 perl 中使用正则表达式从最后一次出现的位置进行匹配

php - 正则表达式和正斜杠

javascript - 使用正则表达式选择 HTML 文本元素?

php - 正则表达式 (?<!-) 是什么意思

javascript - 如何使用 html 模式验证澳大利亚电话号码

regex - 使用正则表达式匹配除三个之外的 Unicode 控制字符

php - 将 Javascript 正则表达式转换为 PHP (PCRE) 表达式