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

从XML提取connectionString多字段值的正则方案及解析

没问题,我给你写一个能适配格式变化的正则表达式,还会一步步拆解逻辑,保证你能看懂:

解决方案:提取ConnectionString字段的正则表达式

先直接上可以用的正则:

user id\s*=\s*(?<userid>[^;]+);\s*password\s*=\s*(?<password>[^;]+);\s*Data Source\s*=\s*(?<datasource>[^;]+);\s*Database\s*=\s*(?<database>[^;"]+)

正则逻辑拆解

我把每个部分拆开来解释,你就能明白它为啥能适配格式不一致的情况:

  • user id\s*=\s*:匹配"user id"关键字,\s*用来匹配0个或任意多个空格,不管字段名和等号之间有没有空格、有多少空格(比如user id=、user id = 都能匹配)
  • (?<userid>[^;]+):这是个命名捕获组,名字叫userid。[^;]+表示匹配除了分号;之外的所有字符,直到遇到下一个分号为止,精准提取完整的user id值,不会多拿也不会少拿
  • ;\s*password\s*=\s*:匹配分隔用的分号,然后用同样的\s*逻辑处理password字段的空格问题
  • (?<password>[^;]+):和userid的捕获组逻辑一样,提取password的值
  • ;\s*Data Source\s*=\s*:处理"Data Source"字段,同样用\s*适配字段名、等号前后的空格变化
  • (?<datasource>[^;]+):提取Data Source的值
  • ;\s*Database\s*=\s*:处理Database字段的空格
  • (?<database>[^;"]+):这里用[^;"]+是因为connectionString的结尾是双引号",所以要匹配到双引号前的内容,避免把引号也包含进去

使用示例(Python)

给你写个实际能用的代码例子,直接就能跑:

import re

# 你的XML行内容
xml_content = '<add name="core" connectionString="user id=value1;password=value2;Data Source=datasource1.comapany.com;Database=databasename_compny" />'
# 正则表达式
extract_pattern = r'user id\s*=\s*(?<userid>[^;]+);\s*password\s*=\s*(?<password>[^;]+);\s*Data Source\s*=\s*(?<datasource>[^;]+);\s*Database\s*=\s*(?<database>[^;"]+)'

# 执行匹配
match_result = re.search(extract_pattern, xml_content)

if match_result:
    # 按你要的格式拼接结果
    output = f"(username={match_result.group('userid')},password={match_result.group('password')}, DataSource={match_result.group('datasource')},Database={match_result.group('database')})"
    print(output)

运行后会输出你想要的格式:

(username=value1,password=value2, DataSource=datasource1.comapany.com,Database=databasename_compny)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:27