我正在尝试在C中使用POSIX正则表达式,但它无法正常工作。这是我的代码:
int regi(char *c, char *e)
{
regex_t regex;
int reti = regcomp(®ex, e, 0);
reti = regexec(®ex, c, 0, NULL, 0);
if(!reti)
return 1;
return 0;
}
int main()
{
char str[5] = {'0','x','2','F'};
if(regi(str, "^(0[xX])[0-9a-fA-F]+"))
// Do stuff
return 0;
}
我在这里看:http://www.peope.net/old/regex.html
这永远不会进入if语句。
答案 0 :(得分:5)
要使用 if(SKPaymentQueue.canMakePayments()) {
let productID:NSSet = NSSet(objects: "com.organization.appname.iap")
let request: SKProductsRequest = SKProductsRequest(productIdentifier: productID as Set<NSObject>)
request.delegate = self
request.start()
}
元字符,您需要告诉+
您正在使用extended POSIX syntax:
regcomp()
此代码还存在其他一些问题,包括将int reti = regcomp(®ex, e, REG_EXTENDED);
转换为const char*
,并忽略char*
的返回值。
答案 1 :(得分:3)
我从来没有完全掌握不同版本的正则表达式,但我似乎basic regexes不知道限定词Show.joins(:contributions)
.select('shows.*, COUNT(contributions.id) AS guest_count')
.where('contributions.role_id = 2')
.where('contributions.person_id IN (?)', self.id)
.group("shows.id")
.order('guest_count desc')
,只知道+
。
一种解决方案是使用扩展的正则表达式。编写正则表达式时必须指定:
*
(我认为reti = regcomp(®ex, e, REG_EXTENDED);
可以在基本正则表达式中使用+
进行模拟,但这并不起作用。)