返回

巧用正则表达式中的 OR 语句:轻松提取 URL 部件号

python

正则表达式中的 OR 语句:解决 URL 部件号提取难题

简介

正则表达式是一种强大的工具,可以帮助您解析文本数据并从中提取特定的模式。当涉及到匹配多种模式时,OR 语句是一个必不可少的技巧。本文将指导您使用正则表达式中的 OR 语句,具体来说是解决提取 URL 中零件号的难题。

OR 语句

OR 语句本质上是指定多个模式,其中任何一个模式匹配成功都将导致整体匹配成功。在正则表达式中,它通常使用管道字符(|)表示。

URL 部件号的两种格式

在提取 URL 中的零件号时,我们通常会遇到两种格式:

  • 格式 1: 零件号位于查询参数 partNumber= 之后
  • 格式 2: 零件号是 URL 中的最后一个数字

正则表达式解决方案

为了匹配这两种格式,我们需要编写一个包含 OR 语句的正则表达式:

.*(?<=partNumber=)([\w-]+)|[0-9]+$

分解正则表达式

  • .*(?<=partNumber=)[\w-]+:匹配格式 1 URL 中的零件号,它由字母、数字和连字符组成。
  • |:OR 语句的分隔符。
  • `[0-9]+【:匹配格式 2 URL 中的零件号,它是一个或多个数字。

示例用法

以下代码演示了如何使用此正则表达式从给定的 URL 中提取零件号:

import re

urls = [
    "https://www.opsm.com.au/ProductDisplay?urlRequestType=Base&catalogId=12601&categoryId=3074457345616695670&seoNameToken=air-optix-colors-2pk&langId=-1&manufacturer=AIR+OPTIX&facetTokenValue=facet-lifecycle%3DMONTHLY&partNumber=ac-airoptix-colors-2&storeId=10151",
    "https://www.opsm.com.au/womens-sunglasses/ov5514su-kasdan/827934482050"
]

for url in urls:
    match = re.search(r".*(?<=partNumber=)([\w-]+)|[0-9]+
import re

urls = [
    "https://www.opsm.com.au/ProductDisplay?urlRequestType=Base&catalogId=12601&categoryId=3074457345616695670&seoNameToken=air-optix-colors-2pk&langId=-1&manufacturer=AIR+OPTIX&facetTokenValue=facet-lifecycle%3DMONTHLY&partNumber=ac-airoptix-colors-2&storeId=10151",
    "https://www.opsm.com.au/womens-sunglasses/ov5514su-kasdan/827934482050"
]

for url in urls:
    match = re.search(r".*(?<=partNumber=)([\w-]+)|[0-9]+$", url)
    if match:
        part_number = match.group(1) or match.group(2)
        print(part_number)
quot;
, url) if match: part_number = match.group(1) or match.group(2) print(part_number)

输出

ac-airoptix-colors-2
827934482050

结论

使用正则表达式中的 OR 语句,您可以轻松地匹配具有多个模式的文本数据。通过结合不同的模式,您可以提高正则表达式的匹配灵活性,从而从复杂的数据中提取所需的信息。

常见问题解答

  1. OR 语句可以用在其他地方吗?
    是的,OR 语句可以用于任何需要匹配多个模式的情况,例如匹配电子邮件地址或电话号码。

  2. 可以使用多个 OR 语句吗?
    是的,您可以串联多个 OR 语句以匹配更复杂的数据模式。

  3. OR 语句与 AND 语句有什么区别?
    AND 语句要求所有模式都匹配成功,而 OR 语句只需要一个模式匹配成功。

  4. 如何确保正则表达式在不同环境中都适用?
    通过彻底测试您的正则表达式并考虑各种输入来确保其健壮性。

  5. 正则表达式有哪些其他用途?
    正则表达式有广泛的用途,包括数据验证、文本替换和复杂字符串处理。