如果在After后面没有-ing单词(在逗号之前),我想匹配它。因此,在-ing和逗号之间不应该有一个After单词。
所需匹配(粗体):
坐下后,他开始说话。 他终于坐下来,开始说话了。 坐下后,开始说话。
我以为这个雷吉会做到的:
\bAfter\b.*(?!\w+ing)+,但是,如果后面没有-ing单词,它也是匹配的:
坐下后,开始说话。 终于坐下来了,开始说话了。 坐下后,开始说话。
这是为什么,以及如何解决它?
发布于 2021-10-23 05:57:15
试试这个正则表达式
只匹配After中的句子和逗号,在wo之后没有-ing的单词
只是.+的一个惰性量化符(在regex中代替了\w+)就能做到这一点。
\bAfter (?!.+?ing).*?,
(在第二个.*后面还有一个懒惰的量词,以防同一个句子中有两个逗号)
输出:

告诉我如果这不适合你..。
发布于 2021-10-23 07:06:07
你尝试过的模式:
.*将首先匹配整行,然后它将回溯到匹配第一个遇到的逗号,因此它也将匹配所有逗号之间。(?!\w+ing),断言,从当前位置看,没有单词字符后面跟着ing,然后匹配一个,,但是\w不匹配逗号,所以断言将始终为真。您可以使用否定字符类排除在负查找中匹配逗号,然后也可以匹配,直到逗号第一次出现。
\bAfter\b(?![^,\n]*ing)[^,\n]*,在部分中,模式匹配:
\bAfter\b在单词边界之间匹配单词After(?![^,\n]*ing)负前瞻断言从当前位置不交叉逗号就不会出现ing[^,\n]*,匹配除逗号外的可选字符(如果不想跨行,则为换行符)https://stackoverflow.com/questions/69685503
复制相似问题