-6

我想使用正则表达式从字符串的开头和结尾删除单引号、括号和方括号。例如。

  1. '我的名字' - 应该更改为我的名字。
  2. [我的名字] - 应该更改为我的名字。
  3. (我的名字) - 应该更改为我的名字。
  4. '([My name])' - 应该更改为 My name。
  5. ('我的名字]' - 应该更改为我的名字。(应该删除所有的 ',(,) ,[ 或 ] 而不管其顺序如何)
  6. My n'am]e - 应该是 My n'am]e(如果它不在字符串的开头或结尾,则不应删除 '、(,)、[ 或 ]
  7. ''([[[(My name)]]])'' - 应该是我的名字(',() 或 [] 的数量可以是任意的,并且应该全部删除)。

请帮助我创建一个正则表达式来一次完成所有这些任务。

4

2 回答 2

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"));
于 2013-05-30T15:07:03.860 回答
0

像这样的东西可能会起作用:

s/^['\[(]*(.*)['\](]*$/$1/
于 2013-05-30T14:46:58.857 回答