将正则表达式向前推进一个字符



我正在寻找介于句点和分号之间的表达式-此表达式本身不能包含句点或分号。

这是我迄今为止的正则表达式。

(?!..*?..*?;)..*?;

正则表达式基本上说:"查找句点和分号之间的字符串。但是,在识别候选句点时,如果在到达分号之前,它后面最后跟着另一个句点,那么我想取消它的资格。">

这是我想要的,除了我不想在匹配中包含起始句点(也不想包含结束分号(。我试图用一个非捕获组(?!..*?..*?;)(?:.).*?;继续前进,但我得到了相同的结果。如何在匹配中省略句点(和分号(?我正在使用Sublime 3搜索正则表达式。

听起来你可能想使用一个负字符集,这将允许你匹配任何字符,但你放在集中的字符(不包括句点和分号(。然后,使用lookahead检查非句点字符后面是否有分号,而实际上与分号不匹配,并使用lookahind确保模式前面立即有句点:

因此,图案

(?<=.)[^.;]+(?=;)

将匹配非句点、非分号字符,这些字符位于句点之后,后跟分号。

https://regex101.com/r/E8XsDB/2

最新更新