字符串匹配如何与模式集和数据集一起工作
模式集或数据集包含一组模式,并为每个模式分配一个唯一的索引。将策略应用于数据包时,表达式会标识要评估的字符串,运算符将该字符串与模式集或数据集中定义的模式进行比较,直到找到匹配项或比较所有模式。然后,根据其函数,运算符返回指示是否找到匹配模式的布尔值,或者返回与字符串匹配的模式的索引。
注意:本主题介绍了模式集的工作。数据集的工作方式相同。模式集和数据集之间的唯一区别是集中定义的模式类型。
考虑以下用例来了解如何将模式用于字符串匹配。
要确定 URL 后缀(目标文本)是否包含任何图像文件扩展名。如果不使用模式集,则必须定义一个复杂的表达式,如下所示:
HTTP.REQ.URL.SUFFIX.CONTAINS("svg") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("bmp") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("png") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("gif") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("tiff") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("jpg")
如果 URL 的后缀为“jpg”,则具有上述复合表达式,Citrix ADC 设备必须按顺序遍历整个复合表达式(从一个子表达式到下一个子表达式),以确定请求是否引用了 jpg 映像。下图显示了此过程中的步骤。
![本地化后的图片](//m.giftsix.com/docs/en-us/citrix-adc/media/without_patterns.png)
当复合表达式包含数百个子表达式时,上述过程是资源密集型的。更好的替代方法是调用模式集的表达式,如下图所示。
![本地化后的图片](//m.giftsix.com/docs/en-us/citrix-adc/media/with_patterns.png)
如上所示,在策略评估期间,运算符 (COUNS_ANY) 将请求中标识的字符串与模式集中定义的模式进行比较,直到找到匹配项。使用 Sample_Patset 表达式,通过六个子表达式进行的多次迭代减少到只有一个。
通过无需配置使用多个 OR 操作执行字符串匹配的复合表达式,模式集或数据集可简化配置并加速请求和响应的处理。
本内容的正式版本为英文版。部分Citrix文档内容采用了机器翻译,仅供您参考。Citrix无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Citrix 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Citrix 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Citrix 不承担任何责任。
DIESER DIENST KANN ÜBERSETZUNGEN ENTHALTEN, DIE VON GOOGLE BEREITGESTELLT WERDEN. GOOGLE LEHNT JEDE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG IN BEZUG AUF DIE ÜBERSETZUNGEN AB, EINSCHLIESSLICH JEGLICHER GEWÄHRLEISTUNG DER GENAUIGKEIT, ZUVERLÄSSIGKEIT UND JEGLICHER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER.
CE SERVICE PEUT CONTENIR DES TRADUCTIONS FOURNIES PAR GOOGLE. GOOGLE EXCLUT TOUTE GARANTIE RELATIVE AUX TRADUCTIONS, EXPRESSE OU IMPLICITE, Y COMPRIS TOUTE GARANTIE D'EXACTITUDE, DE FIABILITÉ ET TOUTE GARANTIE IMPLICITE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON.
ESTE SERVICIO PUEDE CONTENER TRADUCCIONES CON TECNOLOGÍA DE GOOGLE. GOOGLE RENUNCIA A TODAS LAS GARANTÍAS RELACIONADAS CON LAS TRADUCCIONES, TANTO IMPLÍCITAS COMO EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS DE EXACTITUD, FIABILIDAD Y OTRAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN EN PARTICULAR Y AUSENCIA DE INFRACCIÓN DE DERECHOS.
本服务可能包含由 Google 提供技术支持的翻译。Google 对这些翻译内容不做任何明示或暗示的保证,包括对准确性、可靠性的任何保证以及对适销性、特定用途的适用性和非侵权性的任何暗示保证。
このサービスには、Google が提供する翻訳が含まれている可能性があります。Google は翻訳について、明示的か黙示的かを問わず、精度と信頼性に関するあらゆる保証、および商品性、特定目的への適合性、第三者の権利を侵害しないことに関するあらゆる黙示的保証を含め、一切保証しません。
ESTE SERVIÇO PODE CONTER TRADUÇÕES FORNECIDAS PELO GOOGLE. O GOOGLE SE EXIME DE TODAS AS GARANTIAS RELACIONADAS COM AS TRADUÇÕES, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER GARANTIA DE PRECISÃO, CONFIABILIDADE E QUALQUER GARANTIA IMPLÍCITA DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO E NÃO INFRAÇÃO.