RegEx从字符串的开头和结尾删除单引号,括号或方括号

时间:2013-05-30 14:41:43

标签: c# .net regex vb.net-2010

我想使用regEx从字符串的开头和结尾删除单引号,括号和方括号。 例如

  1. '我的名字' - 应该改为我的名字。
  2. [我的名字] - 应该改为我的名字。
  3. (我的名字) - 应该改为我的名字。
  4. '([我的名字])' - 应该改为我的名字。
  5. ('我的名字'' - 应更改为我的名字。(应删除所有',(,),[或],不论其顺序如何)
  6. My n'am] e - 应该是My n'am] e(不应该删除',(,),[或]如果它不在字符串的开头或结尾)< / LI>
  7. ''([[[(我的名字)]]])'' - 应该是我的名字(',()或[]的数字可以是任何,所有都应该删除。)
  8. 请帮我创建一个regEx来同时执行所有这些任务。

2 个答案:

答案 0 :(得分:3)

你没有需要正则表达式。 string.Trim是“数量”的最佳实现,()或[]可以是任何所有应删除的“要求和测试#5。

var cleaned = dirty.Trim("'()[]".ToCharArray());

通过一些测试:

const string expected = "My name";

Func<string, string> clean = given => given.Trim("'()[]".ToCharArray());

Assert.AreEqual(expected, clean("'My name'"));
Assert.AreEqual(expected, clean("[My name]"));
Assert.AreEqual(expected, clean("(My name)"));
Assert.AreEqual(expected, clean("'([My name])'"));
Assert.AreEqual(expected, clean("('My name]'"));
Assert.AreEqual(expected, clean("''([[[(My name)]]])''"));
Assert.AreEqual("My n'am]e", clean("My n'am]e"));

答案 1 :(得分:0)

这样的事情可能有用:

s/^['\[(]*(.*)['\](]*$/$1/