正则表达式:如何通过下5个单词查找ahead/behind?

Regular expression: how to look ahead/behind through the next 5 Words?

在句子"with the electric current density of 7 A the test arrangement"中,我需要检查在7个A之后或之后的5个单词内是否有单词"density"。 所以我用smth。像这样 [0..9]+[空白]+A。问题是如何使用命令 "look ahead" example1(?=example2) 和 "look behind" example1(?<=example) 不仅检查下一个或上一个单词,而且检查下一个或前 5 个单词?还有其他可能匹配吗?

提前致谢

前瞻可以通过 (?=...) 进行正前瞻,(?!...) 进行负前瞻。 Lookbehind 是 (?<...)(?!<...) 但是,并非所有正则表达式引擎都支持可变长度 lookbehinds,因此您可能会遇到问题。

对于前瞻部分,一个简单的解决方案(不考虑标点符号、由 /w 以外的东西组成的单词等)是:

7 A(?=\s+(?:\b\w+\s+){0,4}density)

然后您将需要前瞻或后视解决方案。

但是,为什么不直接检查:"density" 然后 0-4 个词然后 7 A 或 7 A 然后 0-4 个词然后 "density" 而不是环顾四周?您是否需要零宽度断言?

那会是这样的:

(?:density(?:\s+\w+\b){0,4}\s+)(7 A)|(7 A)(?:\s+(?:\b\w+\s+){0,4}density)