这个简单的正则表达式在Cocoa中有什么问题

时间:2012-02-12 18:04:24

标签: objective-c regex

这是一个简单的正则表达式,我尝试使用一些在线测试工具并且它可以工作,但是当我在代码中运行它时,它没有。

开始编辑:根本找不到任何匹配项。我要做的是检查配置文件中的一行是否包含http设置。因此,如果某行是extraintf=,我想将其更改为extraintf=http,如果该行为extraintf=rc:ncurses,我想将其更改为extraintf=rc:ncurses:http,如果该行为{ {1}}我想将其更改为#extraintf=。我正在使用正则表达式找到该行的位置和长度,一旦我有行的开始和长度我写了一些测试和工作代码将做上述罚款,它只是找到匹配的范围是问题。 结束编辑

这是我的正则表达式:

extraintf=http

我希望它找到所有这些文件的中间行:

File1中:

^#?extraintf=.*$

文件2:

# Interface module (string)
#intf=

# Extra interface modules (string)
extraintf=                                    //match this line

# Control interfaces (string)
#control=

文件3:

# Interface module (string)
#intf=

# Extra interface modules (string)
extraintf=rc                                    //match this line

# Control interfaces (string)
#control=

然后我检查匹配的方式是:

# Interface module (string)
#intf=

# Extra interface modules (string)
#extraintf=                                    //match this line

# Control interfaces (string)
#control=

2 个答案:

答案 0 :(得分:4)

您需要在选项中添加NSRegularExpressionAnchorsMatchLines。这样,^$就可以匹配行的开头和结尾。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^#?extraintf=.*$" 
                              options:NSRegularExpressionCaseInsensitive|NSRegularExpressionAnchorsMatchLines 
                              error:NULL];

答案 1 :(得分:0)

您是否尝试过放松这样的比赛?

"^[^e]?extraintf=.*$"