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

如何过滤文本?仅保留引号内内容并在控制台输出的方法

提取文本中所有@"..."格式内容的实现方法

嘿,这个需求用正则表达式就能轻松搞定!核心思路是精准匹配@"..."格式的片段,同时正确处理片段内部的转义字符(比如\n、\"这类)。

具体实现步骤

  1. 编写适配的正则表达式
    我们需要匹配以@"开头、以未转义的"结尾的内容,同时保留内部所有转义字符。对应的正则模式是:
@"(?:\\.|[^"\\])*"

拆解一下这个模式的逻辑:

  • @":匹配开头的固定标识
  • (?:\\.|[^"\\])*:非捕获组,用来匹配内容部分:
    • \\.:匹配任意转义字符(比如\n、\"、\\等)
    • [^"\\]:匹配除了双引号和反斜杠之外的任意普通字符
    • *:表示上述内容可以重复0次或多次,覆盖整个片段内容
  1. 代码示例(以Python为例)
    下面是完整的代码,能直接实现你的需求:
import re

# 示例输入文本(包含转义字符)
input_text = 'different text asdasd anasdasdd different text asdsdas @"1 my \ntext" different text different text asdsdas @"2 my text" text different text asdsdas @"3 my text" @"4 my text" asdasd anasdasdd different'

# 匹配所有符合格式的片段
pattern = r'@"(?:\\.|[^"\\])*"'
matched_fragments = re.findall(pattern, input_text)

# 将结果用空格拼接后输出
output = ' '.join(matched_fragments)
print(output)

运行这段代码后,控制台会输出:

@"1 my 
text" @"2 my text" @"3 my text" @"4 my text"

(注:\n会被解析为换行符,如果你需要保留原始的\n字符串形式,可以把输入文本定义为原始字符串,即r'...')

  1. 其他语言的适配思路
    如果你用JavaScript,逻辑是一样的,只是正则的写法和调用方式略有不同:
const inputText = 'different text asdasd anasdasdd different text asdsdas @"1 my \\ntext" different text different text asdsdas @"2 my text" text different text asdsdas @"3 my text" @"4 my text" asdasd anasdasdd different';
const pattern = /@"(?:\\.|[^"\\])*"/g;
const matchedFragments = inputText.match(pattern);
const output = matchedFragments.join(' ');
console.log(output);

这个方案能完美兼容包含转义字符的场景,不管是换行符、转义引号还是其他转义序列,都能准确捕获并保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:30