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

Advance a regex forward one character

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

到目前为止,这是我的正则表达式。

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

正则表达式基本上说 "Find string between a period and a semicolon. However, upon identifying a candidate period, if it is eventually followed by another period before reaching the semicolon, then I want to disqualify it."

这符合我的要求,只是我不想在匹配中包含初始句点(也不想包含终止分号)。我尝试使用非捕获组 (?!\..*?\..*?;)(?:\.).*?; 继续前进,但我得到了相同的结果。如何在匹配中省略句点(和分号)?我正在使用 Sublime 3 来搜索正则表达式。

听起来您可能想改用负数字符集,这样您就可以匹配任何字符 ,但 您放入集合中的字符(不包括句号和分号) ).然后,使用 lookahead 检查非句点字符 followed 分号,实际上没有 matching 分号,并使用 lookbehind 确保该模式前紧接一个句点:

所以,模式

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

将匹配句号后跟分号的非句点、非分号字符。

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