java - 这个正则表达式应该工作,不是吗?

标签 java regex

我有一个简单的正则表达式来检查函数名称是否位于 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 也能找到子字符串,这不是我想要的......

最佳答案

.matches() 仅当整个 字符串与正则表达式匹配时才返回 True。

您想使用 .find() 方法:

Pattern regex = Pattern.compile("\\b" + Pattern.quote(name) + "\\b");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();

另外,\b 只匹配字母数字和非字母数字字符。因此,如果您的 nameputFillerData 应该没问题,但如果它是类似 putFillerData() 的东西就不行了。

关于java - 这个正则表达式应该工作,不是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474081/

相关文章:

Python:将 list.index 与正则表达式一起使用

python - findall 不返回 Python 3.7 中的所有结果

java - 使用 Java AWT 生成带有辅助 block 的单色 1bitpp PNG

java - EasyMock - 期望静态方法调用

java - 我可以从 keystore 恢复密码吗

java - 如何在数学运算符上拆分字符串作为分隔符,但在引号内转义运算符(在java中)?

Python Regex 从字符串中获取 float

java - 如何计算数组列表中特定类的实例数?

java - 提前创建变量以在循环中使用(?)

javascript - 匹配 [ABC DEF](http ://google. com)