我如何编写捕获A23但不捕获A23的正则表达式

时间:2016-01-29 18:35:09

标签: regex pcre

我如何编写执行以下操作的正则表达式:

Given:  A23+    returns   A23+
Given:  A 23+   returns   23+
Given:  A.rg23- returns   A.rg23-
Given:  A .rg23- returns  .rg23-

这是通过积极的前瞻来实现的,还是[^ ]能够实现这一目标?

2 个答案:

答案 0 :(得分:3)

  如果在首都A之后有一个空格,我会忽略A和空间并捕捉其他一切。但是如果A之后没有空格我想在捕获中包含A。

您可以使用匹配重置\K

在PCRE中试用此正则表达式
\bA(?: \K)?\S+

\K重置报告的匹配的起点。最终匹配中不再包含任何先前消费的字符。因此,在这种情况下,如果在A之后有空格,则\K会重置匹配的信息,从而允许我们捕获其后的任何内容,即\S+

RegEx Demo

答案 1 :(得分:1)

这是另一种方法。

/(?:A )(\S+)|(A\S+)/g

在regex101.com上制作正确的匹配。