正则表达式匹配同一字符串中的非唯一字符

Regex match a non-unique character in same string

这是一个示例字符串。我还有很多问题需要修复:

"måde", "answer" => "råd");

在此字符串中有 2 个字符 å 实例。我想使用正则表达式在 råd 中找到 å 的匹配项,同时忽略 måde.

中的 å

所以基本上我需要在 answer 之后找到 å 的匹配项。

我认为 (?<=answer)å(?=\;) 会起作用,但我对此很陌生,如果有人能指出正确的方向,我将不胜感激。

我之前试过问这个问题,但由于某种原因被否决了,所以我试着在这里重新表述。我希望它足够清楚。

(?<=answer.*?)å(?=.*?;) 应该有效(我认为您不需要转义分号,但根据您的应用程序,您可能需要重新转义分号)。

本质上:Lookaheads/Lookbehinds仍然"match"在你所在的位置。

编辑:许多正则表达式引擎(包括 Sublime Text 2)不喜欢 lookahead/lookbehind 断言中的量词。请改用 (?<=answer).*?å.*?(?=;) 并使用第二个正则表达式搜索结果匹配项。

向后看(通常)不能是可变长度,但是通过使用 负向 向前看,您可以告诉它 不是 匹配:

 å(?!.*answer)

这匹配“å”,但前提是 "answer" 没有出现在它后面的某处。