从String中替换[number]的正则表达式

时间:2013-06-29 13:15:27

标签: c# regex string replace

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

输入示例包括:

1 - 家庭住址[我的第一个家庭住址#12] [1350]
2 - 这里的一些文字(这里有一些文字)有些
3 - hello dolor sit amet [kost street#74] [1008]

输出的例子是:

1 - 家庭住址[我的第一个家庭住址#12]
2 - 这里的一些文字(这里有一些文字)有些
3 - hello dolor sit amet [kost street#74]

我尝试了什么

var pattern = @"^[\d+]$";
var result = Regex.Replace(value, pattern, "");

我想删除带有二次符号的粗体文字“ [”& “] ”如果根本不包含它,请保持原样(参见第二个示例)。

3 个答案:

答案 0 :(得分:3)

您尝试过的模式"^[\d+]$几乎是正确的!该模式的问题在于您正在使用锚点^...$,它基本上表示模式只匹配括号中封装的数字(如果它们是输入中唯一的字符串)。 See the MSDN documentation on Anchors for a more technical summary.

模式\[\d+\]将匹配方形括号中的任何数字。

使用Regex.Replace: -

input = Regex.Replace(input, @"\[\d+\]", string.Empty);

答案 1 :(得分:1)

尝试以下方法:

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+]$";

此模式仅适用于数字。以下模式适合您:

var pattern = @"\[\d+\]";

答案 2 :(得分:0)

对于您的示例,您不需要正则表达式。

string address = "home address [my first home address #12] [1350]";

if(address.Count(x => x == '[') >= 2))
   address = address.Substring(0, address.LastIndexOf('['));