Tag: regex

确定正则表达式是否仅匹配固定长度的字符串

有没有办法确定正则表达式是否只匹配固定长度的字符串? 我的想法是扫描*,+和? 然后,需要一些智能逻辑来寻找{m,n},其中m!= n。 没有必要采取| 运营商考虑在内。 小例子:^ \ d {4}是固定长度的; ^ \ d {4,5}或^ \ d +是可变长度的 我正在使用PCRE。 谢谢。 保罗·普拉特

pcre匹配C中的所有组

我想使用PCRE C库递归匹配一个组。 例如 pattern = “(\d,)” subject = “5,6,3,2,” OVECCOUNT = 30 pcrePtr = pcre_compile(pattern, 0, &error, &erroffset, NULL); rc = pcre_exec(pcrePtr, NULL, subject, (int)strlen(subject), 0, 0, ovector, OVECCOUNT); rc是-1 .. 如何匹配所有组以使匹配为“5”,“6”,“3”,“2”, 比喻,PHP的preg_match_all解析整个字符串,直到主题结束…

CPP +正则表达式validationURL

我想在c ++ {MFC}中构建一个正则表达式来validationURL。 正则表达式必须满足以下条件。 有效url: – http://cu-241.dell-tech.co.in/MyWebSite/ISAPIWEBSITE/Denypage.aspx/ http://www.google.com http://www.google.co.in 无效的url:- http://cu-241.dell-tech.co.in/ \ MyWebSite / \ ISAPIWEBSITE / \ Denypage.aspx / = Regx必须检查无效url为“/ \ MyWebSite / \ ISAPIWEBSITE / \ Denypage”之间的’\’字符的.aspx /” http://cu-241.dell-tech.co.in//////MyWebSite/ISAPIWEBSITE/Denypage.aspx/ =由于多次输入“///////”,Regx必须检查并使URL无效在url中。 http://news.google.co.in/%5Cnwshp?hl=en&tab=wn =正则表达式必须检查并使URL无效,以便额外插入%5C和%2F字符。 我们如何开发满足上述条件的通用正则表达式。 请通过提供一个正则表达式来帮助我们,这个表达式将处理CPP中的上述场景{MFC}

正则表达式匹配空格,但不在“字符串”中

我正在寻找一个常规的exression匹配空格,只有当thos空格没有用双引号(“)括起来时。例如,在 Mary had “a little lamb” 它应该匹配第一个和第二个空间,而不是其他空间。 我想将字符串仅拆分在不在双引号中的空格处,而不是在引号处。 我正在使用C ++与Qt工具包,并希望使用QString :: split(QRegExp)。 QString与std :: string非常相似,而QRegExp基本上是封装在类中的POSIX正则表达式。 如果存在这样的正则表达式,那么拆分将是微不足道的。 例子: Mary had “a little lamb” => Mary,had,”a little lamb” 1″ 2 “3 => 1” 2 “3 (no splitting at “) abc def=”ghi” “jk” = 12 => abc,def=”ghi”,”jk”,=,12 对于编辑很抱歉,当我首先提出问题时,我非常不精确。 希望现在更加清晰。

posix regcomp和regexec线程是否安全? 具体来说,在GNU libc上?

这里有两个独立的问题:我可以在没有锁定的multithreading程序中使用正则表达式,如果是这样,我可以在多个线程中同时使用相同的regex_t吗? 我无法在Google或联机帮助页上找到答案。

Posix正则表达式非贪心

有没有办法在C中使用非贪婪的正则表达式,就像可以在Perl中使用? 我尝试过几件事,但实际上并没有用。 我目前正在使用这个与IP地址和相应的HTTP请求匹配的正则表达式,但是虽然我使用的是*?但它很贪婪 ([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1 在此示例中,它始终匹配整个字符串: #include #include int main() { int a, i; regex_t re; regmatch_t pm; char *mpages = “TEST 127.0.0.1 GET /test.php HTTP/1.1\” 404 525 \”-\” \”Mozilla/5.0 (Windows NT HTTP/1.1 TEST”; a = regcomp(&re, “([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1″, REG_EXTENDED); if(a!=0) printf(” -> Error: Invalid Regex”); a = regexec(&re, &mpages[0], 1, &pm, REG_EXTENDED); if(a==0) { for(i = […]