用于检测单词+括号

时间:2015-10-30 15:21:15

标签: regex

在我最近要做的事情中,我很难找出像IF( foo, bar )ELSEENDIF

这样的保留字的正则表达式

那么对于像"

这样的东西应该是什么样的正则表达式
IF( ?a , <, 4 ) // do some things

ELSE // do some things

我需要能够找到单词作为字符串的开头,并且它应该能够检测那些只放在开头的单词,因此,不应该包含这样的字符串:

//somethings are done here then IF(foo, bar)

我尝试在http://www.regexr.com/中使用:/^IF\((\w)\)/来查找字符串中的IF(),但它无法检测到IF()字符串。表达式有问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

请注意,由于嵌套括号和代码中的其他元素,一般来说这个问题不适合正则表达式。

如果您的字符串很简单,可以尝试使用IF[^)]*\)

此正则表达式将选择IF以及任何不是右括号的字符,直到第一个右括号。但是,如果你有嵌套的括号,它将会失败。

如果你的正则表达式实现支持零长度前瞻,你可以试试这个:

IF.*\)(?=[^)]*$)

这将选择IF以及字符串最后右括号之前的所有字符。但是,如果您在评论中有一个括号,那么这也会失败。

答案 1 :(得分:0)

我改为使用/^IF\((.*)\)\:/并添加了分隔符以忽略其他IF()模式。我还明确地添加了查找字符串的开头而不是在字符串的中间以避免第二种情况。对于我需要的其他案例,我也会遵循相同的模式。

非常感谢!