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