正则表达式匹配同一字符串中的非唯一字符
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" 没有出现在它后面的某处。
这是一个示例字符串。我还有很多问题需要修复:
"måde", "answer" => "råd");
在此字符串中有 2 个字符 å 实例。我想使用正则表达式在 råd 中找到 å 的匹配项,同时忽略 måde.
中的 å所以基本上我需要在 answer
之后找到 å 的匹配项。
我认为 (?<=answer)å(?=\;)
会起作用,但我对此很陌生,如果有人能指出正确的方向,我将不胜感激。
我之前试过问这个问题,但由于某种原因被否决了,所以我试着在这里重新表述。我希望它足够清楚。
(?<=answer.*?)å(?=.*?;)
应该有效(我认为您不需要转义分号,但根据您的应用程序,您可能需要重新转义分号)。
本质上:Lookaheads/Lookbehinds仍然"match"在你所在的位置。
编辑:许多正则表达式引擎(包括 Sublime Text 2)不喜欢 lookahead/lookbehind 断言中的量词。请改用 (?<=answer).*?å.*?(?=;)
并使用第二个正则表达式搜索结果匹配项。
向后看(通常)不能是可变长度,但是通过使用 负向 向前看,您可以告诉它 不是 匹配:
å(?!.*answer)
这匹配“å”,但前提是 "answer" 没有出现在它后面的某处。