Answers:
您只需要使用LIKE
运算符。
例如,
"TITLE" LIKE '%MINERAL CLAIM%'
该%
符号的作用类似于通配符。
LIKE
区分大小写,但ILIKE
不区分大小写。
我有这个确切的问题,并使用regex从python控制台解决了。尽管正则表达式可能很棘手,但它非常强大。您将获得可用于更困难的比赛案例的工具。 这是文档。而这里是一个很好的在线机器来测试您正则表达式的字符串。
首先,这里是我运行的快速脚本,用于检查qgis中的正则表达式字符串
import re
RES_STRING='MINERAL CLAIM'
REGEX_HAYSTACK='DISTRICT LOT 5639, BEING AWARD NO. 2 MINERAL CLAIM, KDYD'
REGEX_STRING=re.compile(RES_STRING)
print "searching for "+RES_STRING+" in "+REGEX_HAYSTACK
REGEX_MATCH = REGEX_STRING.search(REGEX_HAYSTACK)
if REGEX_MATCH:
print "found '"+REGEX_MATCH.group()+"'"
else:
print "No match found"
对正则表达式匹配感到满意后,可以将其包装在一个函数中,以提供所有匹配功能的选择。下面是执行此操作的函数。
def select_by_regex(input_layer,attribute_name,regex_string):
import re
RES_STRING=regex_string
attribute_name_idx = input_layer.fieldNameIndex(attribute_name)
if attribute_name_idx<0:
raise valueError("cannot find attribute"+attribute_name)
else:
fids=[]
for feature in input_layer.getFeatures():
REGEX_HAYSTACK=feature[attribute_name_idx]
REGEX_STRING=re.compile(RES_STRING)
REGEX_MATCH = REGEX_STRING.search(REGEX_HAYSTACK)
if REGEX_MATCH:
fids.append(feature.id())
else:
pass
input_layer.setSelectedFeatures(fids)
#USAGE BIT
input_layer = QgsVectorLayer('path/to/shape/file.shp','layer name', 'ogr')
QgsMapLayerRegistry.instance().addMapLayer(input_layer)
regex_string='MINERAL CLAIM'
attribute_name='TITLE'
select_by_regex(input_layer,attribute_name,regex_string)
您将需要将其保存到文件中并从qgis python ide运行它。
(未经测试,但很自信)