gpt4 book ai didi

c# - 正则表达式替换可能会或可能不会被引用的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:40 25 4
gpt4 key购买 nike

我正在尝试用确保其中没有任何单引号或双引号(或路径的其他不安全字符)的文件路径替换字符串中键 INPUT_CSV 的所有实例.但是,此文件路径将被双引号括起来。

在输入字符串中,键可能被双引号、单引号或根本没有引号括起来。我希望尽可能灵活,并用相同的双引号文件路径替换所有这些实例。

这就是我目前的做法:

Dim doubleQuotedCsvFilePath As String = """" & generatedCsvFilePath & """"

scriptStr = scriptStr.Replace("""INPUT_CSV""", doubleQuotedCsvFilePath)
scriptStr = scriptStr.Replace("'INPUT_CSV'", doubleQuotedCsvFilePath)
scriptStr = scriptStr.Replace("INPUT_CSV", doubleQuotedCsvFilePath)

是否有某种漂亮的正则表达式(或可能是其他方法)可以更简洁地完成这项工作?如果这是最好的方法,我也很好 - 只是想知道是否有更好的方法。谢谢!

附言不是必需的,但如果有某种方法也可以使正则表达式不区分大小写(例如 "input_csv"'input_CSV'INPut_CSV 全部被替换),那也很好。谢谢!

最佳答案

这是我的尝试:

(?i)(['""]?)input_csv\1

(?i) 打开不区分大小写的搜索,然后我们将一个可选单引号或双引号捕获到捕获组中,匹配input_csv 字符串,然后检查是否有与开头相同的结束引号。

VB.NET:

Dim doubleQuotedCsvFilePath As String = """" & "InPuT_CsV" & """"
Dim scriptStr As String
Dim m As Regex = New Regex("(?i)(['""]?)input_csv\1")
scriptStr = m.Replace(doubleQuotedCsvFilePath, "$1INPUT_CSV$1")

C#:

var doubleQuotedCsvFilePath = "\"InPuT_CsV\"";
var scriptStr = string.Empty;
var m = new Regex(@"(?i)(['""]?)input_csv\1");
scriptStr = m.Replace(doubleQuotedCsvFilePath, "$1INPUT_CSV$1");

输出:

"INPUT_CSV"

免责声明:仅当您不使用 CSV 解析器重新发明轮子时才使用它。

关于c# - 正则表达式替换可能会或可能不会被引用的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com