当没有数字或空格+数字时,匹配单词

时间:2011-03-07 17:37:32

标签: c regex

我想匹配“打开”,只要它没有后跟数字或空格+数字 - 不使用否定前瞻(因为据我所知,C不支持这个 - 请纠正我,如果我'我错了)。

谢谢!

3 个答案:

答案 0 :(得分:1)

这有效:

#include <sys/types.h>
#include <regex.h>
regex_t re;
/* regcomp(&re, "on([^ ]| [^[:digit:]])", REG_EXTENDED); */ // thanks sln :)
regcomp(&re, "on ?[^ 0-9]", REG_EXTENDED);

答案 1 :(得分:0)

如果您想在C中编写匹配但没有正则表达式,那么您可能需要查看 ctype.h中的isspace()isdigit()isalpha() < / em>的

答案 2 :(得分:0)

您想匹配包含条件的字符串吗?

编辑 - 没看过?非常好

编辑 - 好的,这里是伙计

/on([^\d ]|[ ](\D|$)|$)/

测试用例:

use strict; use warnings;

my @samps = (
' on',
' on9',
' on ',
' on 5',
' on  7',
' on p',
' on6 ',
);

for (@samps) {
   if ( /on([^\d ]|[ ](\D|$)|$)/ ) { 
         print "matched '$_'\n";
   }
   else {
         print "'$_' failed\n";
   }      
}

输出

matched ' on'
' on9' failed
matched ' on '
' on 5' failed
matched ' on  7'
matched ' on p'
' on6 ' failed