C# 如何使用Regex replace更改字符串中的数据模式?

C# 如何使用Regex replace更改字符串中的数据模式?,c#,regex,C#,Regex,如何使用Regex/c#replace实现以下功能 输入字符串我有:“测试数据:输入字符串继续” 我需要的输出字符串:“测试数据:((测试参数={p}value={v}))输入字符串继续“我假设您真正的问题是如何实现它,并且查找/替换需求似乎相当严格,下面是一个适用于您的情况的需求: Find: ([^:]*): <([^=]*)="([^"])"([^=]*)="([^"])"/> Replace: $1: (($2={$3}$4={$5})) Find:([^:]

如何使用
Regex/c#
replace实现以下功能

输入字符串我有:“测试数据:
输入字符串继续”


我需要的输出字符串:“测试数据:
((测试参数={p}value={v}))
输入字符串继续“

我假设您真正的问题是如何实现它,并且查找/替换需求似乎相当严格,下面是一个适用于您的情况的需求:

Find:      ([^:]*): <([^=]*)="([^"])"([^=]*)="([^"])"/>
Replace:   $1: (($2={$3}$4={$5}))
Find:([^:]*):
替换:$1:($2={$3}$4={$5}))
“查找”表达式可以按如下方式分解:

([^:]*)    # Capture zero or more characters that ARE NOT a colon
: <        # Match a colon, a literal space, then a less-than sign
([^=]*)    # Capture zero or more characters that ARE NOT an equals sign
="         # Match an equals sign, then a double quote
([^"])     # Capture zero or more characters that ARE NOT a double quote
"          # Match a double quote
([^=]*)    # Capture zero or more characters that ARE NOT an equals sign
="         # Match an equals sign, then a double quote
([^"])     # Capture zero or more characters that ARE NOT a double quote
"/>        # Match a double quote, a forward slash, then a greater-than sign
([^:]*)#捕获零个或多个非冒号字符
:<#匹配冒号、文字空格和小于号
([^=]*)#捕获零个或多个非等号的字符
=“#匹配等号,然后匹配双引号
([^“])#捕获零个或多个非双引号的字符
“#匹配双引号
([^=]*)#捕获零个或多个非等号的字符
=“#匹配等号,然后匹配双引号
([^“])#捕获零个或多个非双引号的字符
“/>#匹配双引号、正斜杠和大于号
正则表达式中的括号
()
表示“捕获”与括号内容匹配的任何字符。不在括号内的任何内容都将被“匹配”,但在查找和替换过程中将被丢弃。这对于从模式中提取数据位非常有用,例如从
提取
名称
属性1
值1
,然后放入另一种文本模式

在C#中,使用System.Text.RegularExpressions.Regex对象来匹配或替换正则表达式。我相信语法/签名(对于Regex对象的实例)是
regexObject.Replace(输入为String,替换为String)As String

替换表达式包含
$1
$2
等,这些表达式引用了包含在副词
()
中的匹配部分。因此,
$1
(在替换表达式中)将插入第一组
([^:]*)
(从匹配表达式中)匹配的文本

此组合将转换此文本:

测试数据:“更多文本。诸如此类的“测试数据:”然后是更多的文字

在本文中:

“测试数据:((测试参数={p}值={v}))”更多文本。诸如此类的“测试数据:((测试参数={p}值={v}))”然后是更多的文本


学习正则表达式的一个很好的资源(我了解了90%的知识)是,一个名为RegexBuddy的相关工具也非常适合构造、测试和调试正则表达式。

我想你真正的问题是如何实现它,而查找/替换需求似乎相当严格,以下是一个适用于您的案例:

Find:      ([^:]*): <([^=]*)="([^"])"([^=]*)="([^"])"/>
Replace:   $1: (($2={$3}$4={$5}))
Find:([^:]*):
替换:$1:($2={$3}$4={$5}))
“查找”表达式可以按如下方式分解:

([^:]*)    # Capture zero or more characters that ARE NOT a colon
: <        # Match a colon, a literal space, then a less-than sign
([^=]*)    # Capture zero or more characters that ARE NOT an equals sign
="         # Match an equals sign, then a double quote
([^"])     # Capture zero or more characters that ARE NOT a double quote
"          # Match a double quote
([^=]*)    # Capture zero or more characters that ARE NOT an equals sign
="         # Match an equals sign, then a double quote
([^"])     # Capture zero or more characters that ARE NOT a double quote
"/>        # Match a double quote, a forward slash, then a greater-than sign
([^:]*)#捕获零个或多个非冒号字符
:<#匹配冒号、文字空格和小于号
([^=]*)#捕获零个或多个非等号的字符
=“#匹配等号,然后匹配双引号
([^“])#捕获零个或多个非双引号的字符
“#匹配双引号
([^=]*)#捕获零个或多个非等号的字符
=“#匹配等号,然后匹配双引号
([^“])#捕获零个或多个非双引号的字符
“/>#匹配双引号、正斜杠和大于号
正则表达式中的括号
()
表示“捕获”与括号内容匹配的任何字符。不在括号内的任何内容都将被“匹配”,但在查找和替换过程中将被丢弃。这对于从模式中提取数据位非常有用,例如从
提取
名称
属性1
值1
,然后放入另一种文本模式

在C#中,使用System.Text.RegularExpressions.Regex对象来匹配或替换正则表达式。我相信语法/签名(对于Regex对象的实例)是
regexObject.Replace(输入为String,替换为String)As String

替换表达式包含
$1
$2
等,这些表达式引用了包含在副词
()
中的匹配部分。因此,
$1
(在替换表达式中)将插入第一组
([^:]*)
(从匹配表达式中)匹配的文本

此组合将转换此文本:

测试数据:“更多文本。诸如此类的“测试数据:”然后是更多的文字

在本文中:

“测试数据:((测试参数={p}值={v}))”更多文本。诸如此类的“测试数据:((测试参数={p}值={v}))”然后是更多的文本


学习正则表达式的一个很好的资源(我在这里学到了我所知道的90%的知识)是,一个名为RegexBuddy的相关工具对于构造、测试和调试正则表达式也很有用。

您需要帮助使用RegEx还是替换?向我们展示您迄今为止的代码。略略介绍一下细节-哪些内容接近但不应该匹配?我所拥有的只是匹配模式的正则表达式。据我所知,您可以匹配一个正则表达式模式(我可以这样做)并用另一个字符串替换它,但我需要用另一个模式替换它,不知道如何做,或者它是否可能。@CodeJockey,我更新了问题以显示到底需要匹配和替换什么。字符串可以有很多数据,但是第一个模式需要匹配并替换为第二个模式。字符串中的第一个模式可能多次出现。replacem中的语法和选项