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

开发编程语言时,如何检测子字符串是否处于引号中?

检测子字符串是否处于引号中的实现方案

针对你开发编程语言时需要检测子字符串是否在引号中的需求,用正则表达式确实是高效的方案,下面给出具体实现:

1. 提取所有引号内的内容

如果你需要先把代码中所有被双引号包裹的内容提取出来,可以用这个正则匹配:

import re

code = """
Console.Print("Hello"); Console.Print("World");
"""

# 匹配双引号内的内容,处理转义引号的情况
quote_pattern = re.compile(r'"([^"\\]|\\.)*"')
matches = quote_pattern.findall(code)

print(matches)  # 输出: ['Hello', 'World']

正则说明:

  • ":匹配起始双引号
  • ([^"\\]|\\.):匹配两种情况:要么是非引号、非反斜杠的普通字符,要么是转义字符(比如\")
  • *:允许上述内容重复0次或多次
  • ":匹配闭合双引号

2. 检测特定子串是否在引号中

如果要判断某个特定子串(比如Hello)是否处于引号内,可以结合正则匹配结果来检查:

def is_substring_in_quotes(code, substring):
    quote_pattern = re.compile(r'"([^"\\]|\\.)*"')
    # 遍历所有引号内的内容,检查是否包含目标子串
    for match in quote_pattern.findall(code):
        if substring in match:
            return True
    return False

# 测试示例
print(is_substring_in_quotes(code, "Hello"))  # 输出: True
print(is_substring_in_quotes(code, "Print"))  # 输出: False

注意事项

  • 如果你的语言支持单引号,只需把正则中的"换成',或者同时匹配两种引号(需注意引号配对问题,避免单引号和双引号交叉匹配)
  • 若需要处理多行字符串,记得给正则加上re.DOTALL标志,让.匹配换行符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:45:43