除了特定字符之外的所有内容的正则表达式,前面没有字符串

时间:2018-06-10 17:46:06

标签: java regex

我很幸运得到一个正则表达式构建,它可以处理除了特定字符串之前没有特定字符的所有内容。

例如这个字符串:

Mr. Jones likes fish.

应该像这样匹配:

Mr. Jones likes fish

而不是例如:

Mr

我认为这应该很容易,但它不会起作用。我已经让它在点上得到正确的匹配:

(?<!Mr)\.

虽然补充匹配不起作用。我试过这个:

(?<!Mr)[^.]*

因为我认为光标会在那个点上点,并且看到它被“先生”所取代并且它将不匹配。但确实如此。

这样的事情:

(^((?<!Mr).))*

但是那个正则表达式中的后视不再被认为是一个,它只是试图匹配每个角色。

我已经看到this回答,但我找不到任何帮助我的地方。

1 个答案:

答案 0 :(得分:2)

在我看来,您希望匹配.以外的任何字符,但句点前面有Mr,因此您可以使用alternation(或可选组) )和lookbehind

(?:[^.]+|(?<=Mr)\.)+

作为Java字符串:"(?:[^.]+|(?<=Mr)\\.)+"

Here is a demo at regex101(非Java)