1

我想让“行尾”字符($)“可选”(或非贪婪)。意思是,我想在行尾捕获某种模式,或者没有。这是我建立的正则表达式:

(.+\s*)\s*(?:(\(\s*[xX\*]\s*\d+\s*\))|$)

我想捕捉像

Incompatible device (x10) ; Boot sequence aborted

我想要的是,能够在此处捕获第一个字符串(不兼容的设备(x10)),但如果量词(x10)没有出现,则能够仅捕获第二个(引导序列中止,没有一个(x##)在它之后)。如果我测试模式

boot sequence aborted

它确实被捕获了,但是,如果我在上面的整个字符串上测试它,所有东西都会被捕获,我只需要“不兼容的设备”部分。

4

1 回答 1

1

你真的很接近:你所需要的只是用 替换.匹配任何字符的[^;],如下所示:

([^;]+\s*)\s*(?:(\(\s*[xX\*]\s*\d+\s*\))|$)

现在,您的表达式将捕获第一部分(如果(x10)存在)(演示),或者第二部分(如果缺失)(演示)。

于 2015-02-12T11:10:56.130 回答