2

我正在尝试构建一个正则表达式,它可以查找包含撇号(O'Connor,O'Neil)的名称并将撇号替换为 2 个撇号(O''Connor,O''Neil)。

我不想对相关字符串中的所有撇号执行此操作,而只是出现在两个字母(大写或小写)之间的撇号。现在,我可以毫不费力地找到 LETTER-APOSTROPHE-LETTER 的实例,但我不确定如何采用该序列'并将''.

4

4 回答 4

7

您说这是用于将值插入数据库。不要这样做 - 改用参数化查询,这将正确处理转义。 乔恩斯基特这么说

于 2012-08-10T15:07:14.170 回答
1
new Regex("([a-zA-Z])'([a-zA-Z])").Replace(input, match => match.Groups[1] + "''" + match.Groups[2])
于 2012-08-10T15:00:59.493 回答
1
string result = Regex.Replace(input, @"(?<=[^'])(')(?=[^'])", "''");
于 2012-08-10T15:03:24.170 回答
0

这会起作用,我刚刚测试过:

Regex.Replace("(\w)'(\w)","$1''$2");

(O'Connor, O'Neil) 变成 (O''Connor, O''Neil)

于 2012-08-10T14:58:24.610 回答