関数名がCコードのブロック内にあるかどうかを確認するための簡単な正規表現があります(実際の名前検索コードはJavaで記述されています)。この例では、私が見つけようとしている関数名はputFillerDataと呼ばれています。コードブロックは次のようになります。
static void fillerSwapByteOrder(int t_database, tag_t t_message, char* data_buff, int* pos)
{
short data_length = trxDBGetNodeSize(t_database);
if (!data_length) return;
char *data = umalloc(data_length);
if (data_length == sizeof(short))
{
short s_data = 0;
shareGReadData(t_database, &s_data);
short nbo_data = htons(s_data);
memcpy(data, &nbo_data, sizeof(short));
}
else if (data_length == sizeof(int))
{
int s_data = 0;
shareGReadData(t_database, &s_data);
int nbo_data = htonl(s_data);
memcpy(data, &nbo_data, sizeof(int));
}
else
{
ufree(data);
return;
}
putFillerData(t_message, data, data_length, data_buff, pos);
ufree(data);
}
私が使用している正規表現ステートメントは次のようになります。
Pattern.matches("\\b" + Pattern.quote(name) + "\\b", code);
ただし、これは常にfalseを返します...なぜですか?
私がこの正規表現を使用している理由は、.containsが部分文字列も検出するためですが、これは私が望んでいることではありません...