我有一些由空格分隔的任意长度代码组成的文本,例如:
AA *X IJ XYZ 7F *A OF *B 3C
作为第一步,我想提取所有 2 个字符的代码,其中第一个字符是星号,第二个字符是 3 种不同的选择之一(假设它们是 A、B 和 C)。所以在这一步之后,在这个例子中,我的匹配列表*A
和*B
.
我尝试使用以下正则表达式
\b(\*[ABC])\b
...但是当然,这不起作用,因为星号不被视为单词的一部分。我怎样才能以一种可读、可维护的方式做到这一点?
使用正向的lookbehind,并匹配字符串的开头或空格字符:
(<=^| )(\*[ABC])\b
在此处查看实际操作:http ://regex101.com/r/wS5qS2
如果您只关心捕获组,则不需要后视。只需将其保留在您的捕获组之外:
(?:^| )(\*[ABC])\b