我的正则expression式太多了。 我怎么能告诉它匹配尽可能最小的模式?
我有这个RegEx:
('.+')
它必须与C中的字符文字相匹配。例如,如果我有'a' b 'a'
它应该匹配a和它们周围的字母。
然而,它也匹配(它不应该),也许是因为严格来说,也是在两者之间。
这是一个错误的截图(我使用这个语法突出显示):
我对正则expression式相当陌生。 我怎么能告诉正则expression式不匹配?
这是贪婪和匹配的第一个撇号和最后一个之间的一切。
这应该匹配任何不是撇号的东西。
('[^']+')
另一种select是尝试非贪婪的比赛。
('.+?')
你尝试过一个非贪婪的版本,例如('.+?')
?
通常有两种匹配模式 (或两组量词),最大(贪婪)和最小(非贪婪)。 第一个将导致最长的匹配,后者最短。 你可以在Perl Cookbook (6.15节)中阅读(尽pipe在perl上下文中)。
尝试:
('[^']+')
^表示包括除了方括号内的字符以外的每个字符。 这样,它不会匹配'a' b 'a'
因为中间有一个'
,所以相反它会给'a'
你需要逃避qutoes:
\'[^\']+\'
编辑:嗯,我想我会这个答案取决于你使用的是什么郎/系统。