我需要在第一个遇到特定字符之前匹配任何字符。尝试:
use feature 'say';
say $1 if 'bla-bla if (func(arg1, arg2) < 0) {' =~ /func\s*\((.*?)\)\s*\{/;
我认为此代码没有输出,导致.*?
匹配arg1, arg2
(即在最近的)
之前),{
之后没有func(arg1, arg2)
{1}}所以正则表达式变为假。但是,输出为arg1, arg2) < 0
。 Indeed,非贪婪的正则表达式选择尽可能少的允许整体模式匹配。但我希望这个正则表达式对这些字符串是错误的。我在that post找到了可行的解决方案。在我的情况下,.*?
应更改为[^\)]*
。但还有其他方法吗?感谢您的任何澄清和示例。对不起,如果这很明显