我使用的,如果类型(if\()(.*)(?!\{)
正则表达式查找所有的“如果”没有声明“{”
似乎并不奏效......
例子:
if((Collection.containsKey(primaryKeyValue))) {
此外,我要排除else if
我使用的,如果类型(if\()(.*)(?!\{)
正则表达式查找所有的“如果”没有声明“{”
似乎并不奏效......
例子:
if((Collection.containsKey(primaryKeyValue))) {
此外,我要排除else if
此正则表达式匹配(大部分时间)if
声明,没有使用{
与;
结束:
\bif\s*\([^\{]+;
(\b
是字边界,以确保如果是单独的,而不是另一个词的一部分等ZIF)。
但是,这个正则表达式是不可靠的。其实,任何正则表达式解决方案在这里不能100%可靠,因为您匹配的字符可以存在于if
条件内的字符串中。
考虑这个例子 - 它不会通过上述正则表达式,而这显然是罚款由您的规则:
if (s.equals(";{;};")) { t="({;})"; }
而且它会通过这个例子,这是不对您的规则:
if (s.equals("{;}")) t="({;})";
如果你想在这里坚如磐石的表现,你必须编写你自己的代码解析器。
+1表示何时无法工作:) – exexzian
没有范围的if
需要由;
终止。所以你可以在{
之前检查一下if
之后是否有;
。这个正则表达式应该这样做:
(if[^{;]*;)
请注意,这需要多行正则表达式。
正则表达式不是真正的票。如果你有例如Perl或Python,你可以在整个文件中使用他们对字符串的多行regex支持,但是你也可以为'if'语句定义一个简单的解析器,或者为你的目标语言找到一个语法。 – tripleee
你的课程是什么? perl(或任何PCRE)? VI? Emacs的? JavaScript的? – dan3