我想完全丢弃以字母 C
开头的匹配项。
这是一个示例文本,每一行都是一个单独的示例:
C4526913CA57248560A562492460C
A000008002A20839256662C
C370694CA102000979A68008192429291C
我使用的正则表达式是
[cC]?([0-9*dD]){5,}[cC]
匹配:
1: C4526913C
2: 562492460C
3: 20839256662C
4: C370694C
5: 68008192429291C
但我不想匹配以C
开头的那些,我已经尝试过这些
(?!^[cC])[cC]?([0-9*dD]){5,}[cC]
(?![cC].*[cC])([cC]?([0-9*dD]){5,}[cC])
这增加了一个负面的展望,但它匹配除起始 C
之外的所有内容,而不是丢弃整个匹配。像这样:
C4526913C -> 4526913C
如何仅使用正则表达式来实现这一点?
答案 0 :(得分:2)
您可以匹配您不想要的内容,并在一个组中捕获您想要保留的内容。
由于组 ([0-9*dD]){5,}
中只有一个字符类,因此您可以省略该组并重复字符类。
请注意,[0-9*dD]
匹配数字 0-9 或 *
或 d
或 D
,但只有数字在示例数据中才能匹配。
[cC][0-9*dD]{5,}[cC]|([0-9*dD]{5,}[cC])
对于示例数据(没有 D
d
和 *
),如果支持,您还可以使用后视:
(?<![cC0-9])[0-9]{5,}[cC]