Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换字符串中的[number]的正则表达式_C#_Regex_String_Replace - Fatal编程技术网

C# 替换字符串中的[number]的正则表达式

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

我想从字符串中删除[number]

输入示例如下:

1-家庭地址[我的第一个家庭地址#12][1350]
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()
方法,因为添加该方法只是为了删除额外的空间。(我已经更新了答案)