正则表达式:如何通过下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)
在句子"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)