You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ifstream和get()提取文件中带空格的双引号字符串?

别担心,这个问题其实用正则表达式就能轻松解决,我之前处理类似的文本提取需求时也踩过坑,下面给你一步步捋清楚:

核心思路:用正则精准匹配双引号内的内容

要提取双引号包裹的字符串(不管里面有没有空格),关键是匹配从双引号开始,到下一个双引号结束之间的所有内容,但要排除双引号本身。这里用正则表达式的[^"]来匹配任何非双引号的字符,加上*表示匹配0次或多次,就能完美覆盖带空格的情况。

代码示例(以Python为例)

假设你的文件内容是这样的:

Some random text "String" and another "With Space" plus unquoted words and numbers 123

下面是提取并打印目标字符串的代码:

import re

# 读取目标文件内容
with open('your_file.txt', 'r') as f:
    file_content = f.read()

# 正则匹配所有双引号包裹的内容
target_strings = re.findall(r'"([^"]*)"', file_content)

# 打印提取到的结果
for s in target_strings:
    print(s)

运行这段代码后,你会得到符合预期的输出:

String
With Space
为什么之前的代码可能失效?

如果你之前的正则用了\w+(仅匹配字母、数字和下划线),那它只能提取不带空格的字符串,遇到"With Space"这种带空格的内容就会中断匹配。而[^"]*会匹配双引号之间的所有非双引号字符,包括空格、标点等,完全满足你的需求。

如果是其他编程语言(比如Java、JavaScript),核心思路也是一样的,只是正则的调用方法略有不同。比如JavaScript里可以用fileContent.match(/"([^"]*)"/g),再对结果做简单处理就能拿到目标字符串。

内容的提问来源于stack exchange,提问作者Kyle Hobbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:09:01