C# 替换字符串中的[number]的正则表达式
我想从字符串中删除[number] 输入示例如下: 1-家庭地址[我的第一个家庭地址#12][1350]C# 替换字符串中的[number]的正则表达式,c#,regex,string,replace,C#,Regex,String,Replace,我想从字符串中删除[number] 输入示例如下: 1-家庭地址[我的第一个家庭地址#12][1350] 2-此处有些文字(此处有些文字)有些 3-你好,多洛·西特·阿梅特[kost street#74][1008] 输出示例如下: 1-家庭地址[我的第一个家庭地址#12] 2-此处有些文字(此处有些文字)有些 3-你好,多洛·西特·阿梅特[kost street#74] 我尝试过的 var pattern = @"^[\d+]$"; var result = Regex.Replace(val
2-此处有些文字(此处有些文字)有些
3-你好,多洛·西特·阿梅特[kost street#74][1008]
输出示例如下: 1-家庭地址[我的第一个家庭地址#12]
2-此处有些文字(此处有些文字)有些
3-你好,多洛·西特·阿梅特[kost street#74]
我尝试过的
var pattern = @"^[\d+]$";
var result = Regex.Replace(value, pattern, "");
我想删除带有二次符号“[”&“]”的粗体文本,如果它根本不包含它,则保持原样(参见第二个示例)。尝试以下操作:
input = "home address [my first home address #12] [1350]"
string pattern = @"\[\d+\]";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
更新:(在用一些代码更新问题之后…)
这种模式只适用于数字。以下模式适用于您:
var pattern = @"\[\d+\]";
请尝试以下操作:
input = "home address [my first home address #12] [1350]"
string pattern = @"\[\d+\]";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
更新:(在用一些代码更新问题之后…)
这种模式只适用于数字。以下模式适用于您:
var pattern = @"\[\d+\]";
您尝试的模式几乎是正确的!该模式的问题是您使用的是定位点
^…$
,它基本上表示模式仅与大括号中封装的数字匹配,如果它们是输入中唯一的字符串
模式\[\d+\]
将匹配封装在方括号中的任何数字
使用Regex.Replace
:-
input = Regex.Replace(input, @"\[\d+\]", string.Empty);
您尝试的模式几乎是正确的!该模式的问题在于,您使用的是锚点
^…$
,它基本上表示,如果该模式是输入中唯一的字符串,则仅与大括号中封装的数字匹配
模式\[\d+\]
将匹配封装在方括号中的任何数字
使用Regex.Replace
:-
input = Regex.Replace(input, @"\[\d+\]", string.Empty);
对于您的示例,您不需要正则表达式
string address = "home address [my first home address #12] [1350]";
if(address.Count(x => x == '[') >= 2))
address = address.Substring(0, address.LastIndexOf('['));
对于您的示例,您不需要正则表达式
string address = "home address [my first home address #12] [1350]";
if(address.Count(x => x == '[') >= 2))
address = address.Substring(0, address.LastIndexOf('['));
请说明-1的原因,请向我们展示您迄今为止尝试的内容,并向我们展示预期的输入和输出。使用^(
字符串开头
)和$(字符串结尾
)时,如果模式位于字符串之间,您将无法匹配模式。请,说明-1的原因请向我们展示您迄今为止尝试的内容,并向我们展示预期的输入和输出。使用^(字符串开头
)和$(字符串结尾
)如果在字符串之间,你将无法匹配模式我感觉他提供了数字。我感觉他提供了数字。我认为这符合你预期的输入和输出,但我也有这样的印象,你想去掉括号,留下数字?问题还不清楚。@FabianBigler,你的模式行不通。它应该是@“\[\d+\]”(
:)我认为这符合您预期的输入和输出,但我也有这样的印象,您想去掉大括号并留下数字?问题还不清楚。@FabianBigler,你的模式行不通。在表面上应该是@“\[\d+\]”(
:)你是对的,这确实解决了这个例子。但是,第一行的字符串末尾确实有一个空格字符,该字符串已结转至所需的输出,请参见:。您的解决方案将删除空白。我认为这是一个错误。在这种情况下,您可以删除末尾的Trim()
方法,因为添加该方法只是为了删除额外的空间。(我更新了答案)表面上你是对的,这确实解决了这个例子。但是,第一行的字符串末尾确实有一个空格字符,该字符串已结转至所需的输出,请参见:。您的解决方案将删除空白。我认为这是一个错误。在这种情况下,您可以删除末尾的Trim()
方法,因为添加该方法只是为了删除额外的空间。(我已经更新了答案)