これは私の正規表現C言語での作業であり、何か問題があります。私はsed
で使用されている構文、つまりs/findthisstring/replacewiththis/g
を複製しようとしています。ここではfindthisstring
が存在し、replacewiththis
は存在しません。Posixの正規表現がC言語で動作しない
私が思いついた正規表現は、それが私がめちゃくちゃにされた部分が.+
であると信じて私のコード
int verifyPattern(char *pattern) {
regex_t regex;
int reti = regcomp(®ex, "^s/(.*)/(.*)/g$", 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
reti = regexec(®ex, pattern, 0, NULL, 0);
if (!reti) {
puts("Match");
} else if (reti == REG_NOMATCH) {
puts("No match");
} else {
puts("Regex error");
}
return 1;
}
である。ここ^s/(.*)/(.*)/g$
です。私が.*
と置き換えるとすべてが問題ありません。誰もがこれのための回避策を知っている??
ありがとうございます!
動作しないものを表示するようにテストケースを提供してください。 –
なぜ正規表現のスラッシュをエスケープしていますか? '/'は正規表現エンジンのメタ文字ではありません。また、正規表現を解析する方法がわからない限り、埋め込み正規表現を見つけるのは簡単ではありません。 – sln
'const char * str_regex ="^s /((\\\\。| [^ *)/ g $ ";} –