
My regex is matching too much. How do I make it stop?
我有一个巨大的丑陋的字符串,我正试图从它使用regex提取片段。 在这种情况下,我想抓住"项目名称"后面的所有内容,直到它显示"j0000011:"(11每次都是不同的数字)。 这是我玩过的雷吉士
问题是,它不会停止,直到它击中j0000020:在最后。 如何使regex在第一次出现j[0-9]7时停止? 使
在这里使用非贪心量词可能是最好的解决方案,因为它比贪心量词更有效:贪心匹配通常尽可能地进行(在这里,直到文本结束!)然后跟踪字符后面的字符尝试和匹配的部分后来。 但是,请考虑使用否定字符类来代替:
EDCOX1"2"意味着"除了空白之外的所有东西,这正是你想要的。" 好吧, 这是我用过的。
我还建议您尝试使用"expresso"来使用正则表达式——它是一个实用程序,是一个用于regex编辑和测试的伟大(免费)实用程序。 它的一个优点是,它的用户界面公开了很多对regex不熟悉的regex功能,这样他们就可以很容易地学习这些新概念。 例如,当使用UI构建regex并选择"*"时,您可以选中复选框"越少越好",查看结果regex,并测试它的行为,即使您以前不熟悉非贪婪表达式。 可在其网站下载:网址:http://www.ultrapico.com/expresso.htm 快速下载:http://www.ultrapico.com/expressodownload.htm (项目名称:s+[a-z]:(?:\w+)+[a-za-z]+s+j[0-9]7)(?=) 这对你有用。 添加(?):\w+)+。[a-za-z]+将更严格,而不是。* |