我的声明如下
SearchResponse scrollResp = client.prepareSearch()
.setIndices(index)
.setTypes(type)
.setSearchType(SearchType.QUERY_AND_FETCH)
.setFetchSource(new String[]{"my_name"}, null) <--- your specific field
.setQuery(QueryBuilders.matchAllQuery())
.setSize(10).execute().actionGet();
我正在尝试创建一个正则表达式,以便在使用insert关键字时从文件中的一组行匹配此行。但由于开头使用'#',我不想考虑这一行。如何实现这一目标。我尝试了下面的正则表达式,但仍然考虑这条线,有人可以建议如何实现这一点吗?
#sv_q = " INSERT INTO alertuser.REALTIME
答案 0 :(得分:1)
如果您想使用.find()
,则需要在^
或\A
开头锚定模式。此外,您最好使用字词边界仅匹配整个单词insert
和into
,并使用\s+
代替\s*
来强制执行至少1次出现的空格insert
和into
:
"^(?!#).*\\binsert\\s+into\\b"
您可以将解决方案缩短为
if (s.matches("(?i)(?!#).*\\binsert\\s+into\\b.*")) { doing some checks}
matches()
方法需要完整的字符串匹配,因此,您需要在最后添加.*
。此外,Pattern.CASE_INSENSITIVE
选项可以在嵌入标志选项(?i)
的帮助下内联使用。如果您的输入可以包含换行符,请使用(?si)
代替(?i)
。