我有一个与PUT my_index {
"analysis" : {
"analyzer" : {
"email_analyzer" : {
"filter" : [
"lowercase"
],
"type": "custom",
"tokenizer" : "uax_url_email"
}
}
}
}
相匹配的简单模式// create a socket for connecting to a server
ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
if (ConnectSocket == INVALID_SOCKET)
{
WSACleanup();
fclose(fName);
return 4;
}
。我现在遇到的问题是记录中该人的姓氏带有连字符,如LASTNAME, FIRSTNAME MI_IDNUMBER
。我尝试将^[a-zA-Z0-9, ]+_[a-zA-Z0-9]+
之类的内容合并到其中,但这仅标识字符串中的WALKER-REYES, ANNA T_AW12345
。将这一切串在一起的最佳方法是什么?并非所有名称都带有连字符。
答案 0 :(得分:2)
构建正则表达式的方法不是最佳的。您要匹配每个字符(包括空格),直到找到下划线(_
),然后匹配其余字符。而不是这样做,您不应该匹配空格并将字符串的每个部分都放在不同的组中。
您可以尝试使用支持连字符的正则表达式。
^(?: ?([a-zA-Z0-9\-]+),?){2} ([a-zA-Z0-9_]+)
您可以在this regex101
上测试更多案例