如何从字符串中提取相关内容

实例1 sql语句相关

    {
        /**
         * \s       表示一个\t、一个\n等
         * \s       Matches a whitespace character (QChar::isSpace()).
         * \s*      多个
         * \s+      至少一个
         * \s{2}    两个
         * \s{1,2}  一个到两个
         * \w       表示一个字母、一个数字、一个汉字等
         * \w       Matches a word character (QChar::isLetterOrNumber(), QChar::isMark(), or '_').
         * \w*      多个
         * \w+      至少一个
         * \w{2}    两个
         * \w{1,2}  一个到两个
         * ()       表示提取的位置
         */
        QString Output = "select obid from cey_bt_table where ch_billno = 'Q001' ";
        QRegExp rx(R"(select\s*(\w*)\s*from\s*(\w*)\s*where\s*(\w*)\s*=\s*'(\w*)'\s*)");
        rx.indexIn(Output);
        QStringList qsl = rx.capturedTexts();

        for(int i=0; i<qsl.count(); i++)
        {
            qDebug()<<"Da Data Thing: "<< i << " Da Value Thing: " << qsl.at(i);
        }
        return 1;
    }

运行结果:

Da Data Thing: 0 Da Value Thing: "select obid from cey_bt_table where ch_billno = 'Q001' "

Da Data Thing: 1 Da Value Thing: "obid"

Da Data Thing: 2 Da Value Thing: "cey_bt_table"

Da Data Thing: 3 Da Value Thing: "ch_billno"

Da Data Thing: 4 Da Value Thing: "Q001"

实例2 mac地址相关

{
        /**
         * \d  表示一个数字
         * \d  Matches a digit (QChar::isDigit()).
         * \d+ 表示重复一次或者多次 1、12、23
         * \d* 表示重复零次或者多次 _、12、11
         * \d{2} 表示只能匹配两个字符
         */
        QString Output;
        Output="Duration: 00:01:25.65, start: 0.050000, bitrate: 5200 kb/s";
        QRegExp rx = QRegExp(R"(Duration:\s*(\d{2}:\d{2}:\d{2}.\d{2}),\s*start:\s*(\d+\.\d+),\s*bitrate:\s*(\d*)\s*kb/s)");

        rx.indexIn(Output);
        QStringList qsl = rx.capturedTexts();

        for(int i=0; i<qsl.count(); i++)
        {
            qDebug()<<"Da Data Thing: "<< i << " Da Value Thing: " << qsl.at(i);
        }
    }

运行结果:

Da Data Thing: 0 Da Value Thing: "Duration: 00:01:25.65, start: 0.050000, bitrate: 5200 kb/s"

Da Data Thing: 1 Da Value Thing: "00:01:25.65"

Da Data Thing: 2 Da Value Thing: "0.050000"

Da Data Thing: 3 Da Value Thing: "5200"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用正则表达式来从字符串提取指定的内容。例如,如果要从字符串提取所有的数字,可以使用以下代码: ```python import re string = "abc123def456ghi789" numbers = re.findall('\d+', string) print(numbers) ``` 输出结果为: ``` ['123', '456', '789'] ``` 其,`\d+`表示匹配一个或多个数字。`re.findall()`函数会返回所有匹配的结果。 ### 回答2: Python作为一种广泛使用的编程语言,提供了很多方法和库来从字符串提取指定的内容。以下是一些常用的方法: 1. 切片(Slice):使用切片操作可以从字符串选择指定的部分。例如,可以使用以下代码从字符串提取第3到第6个字符: ``` string = "hello world" substring = string[2:6] print(substring) ``` 输出结果为:`llo `。 2. split()函数:使用split()函数可以将字符串拆分成多个子字符串,并返回一个字符串列表。例如,可以使用以下代码从字符串提取以空格分隔的第3到第5个单词: ``` string = "hello world this is python" words = string.split() substring = " ".join(words[2:5]) print(substring) ``` 输出结果为:`this is python`。 3. 正则表达式(Regular Expression):使用正则表达式可以在字符串搜索和提取指定的模式。Python提供了re模块来支持正则表达式。例如,可以使用以下代码从字符串提取所有数字: ``` import re string = "there are 3 apples and 5 bananas" numbers = re.findall("\d+", string) print(numbers) ``` 输出结果为:`['3', '5']`。 4. 字符串方法(String Method):使用字符串方法可以对字符串执行各种操作,包括查找、替换、删除等。Python提供了丰富的字符串方法,如find()、replace()、strip()等。例如,可以使用以下代码从字符串提取不包含首尾空格的子字符串: ``` string = " hello world " substring = string.strip() print(substring) ``` 输出结果为:`hello world`。 总之,Python提供了多种从字符串提取指定内容的方法和技术,开发人员可以根据具体情况选择最合适方法。 ### 回答3: Python是一种易学易用的编程语言,因其强大的文本处理能力在数据处理和自然语言处理领域广受欢迎。从字符串提取指定内容是Python文本处理的常见需求,可以使用正则表达式、字符串截取等方法实现。 1. 正则表达式: 正则表达式是字符串匹配的利器,可以通过指定的模式从文本匹配出所需的内容。Python内置了re模块,通过调用其函数实现字符串的正则匹配。例如: ```python import re str = 'Hello world 123' result = re.search(r'\d+', str) print(result.group(0)) # 输出:123 ``` 以上代码使用re.search函数匹配字符串的数字,并使用group函数返回匹配到的结果。其,`\d+`表示匹配一个或多个数字。 2. 字符串截取: 通过指定字符串的起止位置,可以实现从字符串截取所需的内容。Python提供了灵活的字符串切片方式,使用`str[start:end]`的形式即可实现字符串截取。例如: ```python str = 'ABCDEFG' result = str[1:4] print(result) # 输出:BCD ``` 以上代码使用`str[1:4]`方式截取字符串的第2个到第4个字符,返回了所需的内容。 需要注意的是,正则表达式和字符串截取均需要根据字符串的特点和匹配规则来实现,必要时可以通过组合使用不同的方式来实现更加复杂的文本处理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值