如何用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
相关产品推荐
相关产品推荐

