我一直在环顾四周,无法做到这一点。我不完全是菜鸟。
我需要获取由(包括)不包含 START 的 START 和 END 分隔的文本。基本上我找不到一种方法来否定整个单词而不使用高级内容。
示例字符串:
abcSTARTabcSTARTabcENDabc
预期结果:
STARTabcEND
不好:
STARTabcSTARTabcEND
我不能使用向后搜索的东西。我在这里测试我的正则表达式:www.regextester.com
感谢您的任何建议。
最佳答案
尝试这个
START(?!.*START).*?END
看到它here online on Regexr
(?!.*START)
是一个负面的前瞻。它确保后面没有“START”这个词.*?
是所有字符的非贪婪匹配,直到下一个“END”。它需要,因为负前瞻只是向前看而不捕获任何东西(零长度断言)更新:
我想多了,上面的解决方案一直匹配到第一个“END”。如果不需要(因为您从内容中排除了 START),则使用贪婪版本
START(?!.*START).*END
这将匹配到最后一个“END”。
关于正则表达式 - 在不包含单词的两个单词之间获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333145/